可能會更好地寫一些解析器,像這樣的閉包?
$a = array(
'formID' => '40923773875567',
'q1_clickTo' => "Country: UNITED STATES
Province: Kentucky
Latitude: 37.568694
Longitude: -84.29632229999999",
'website' => array(
'simple_spc' => '40923773875567-40923773875567'
)
);
$trim = function($v) { return trim($v); };
$float = function($v) { return (float) $v; };
$mapping = array(
'spc' => array('website', function($v) { return $v['simple_spc']; }),
'data' => array('q1_clickTo', function($v) {
$data = explode("\n", $v);
$result = [];
foreach ($data as $line) {
$parts = explode(':', $line);
$result[$parts[0]] = $parts[1];
}
return $result;
}),
'country' => array('Country', $trim),
'longitude' => array('Longitude', $float),
'latitude' => array('Latitude', $float),
'province' => array('Province', $trim)
);
$result = [];
foreach ($mapping as $key => $value) {
$info = $a[$value[0]];
$info = $value[1]($info);
if (!is_array($info)) {
$result[$key] = $info;
} else {
foreach ($info as $infoKey => $infoValue) {
$a[$infoKey] = $infoValue;
}
}
}
var_export($result);
工作示例這裏:http://sandbox.onlinephpfunctions.com/code/04f28278bb00b3ca0372d85a837537a2552bc248
有什麼問題,使用索引像$訪問[ '網站'] [ 'simple_spc']? –