【发布时间】:2016-08-07 02:07:02
【问题描述】:
我有一个 CSV 文件。第一行包含标题信息。
以下是文件的摘录(添加了 cmets)。
Name, City, State, Country // header line
Tom, Jackson, Mississippi, United States // line 1
Simon, Temple, Pennsylvania, United States // line 2... etc...
我正在使用 array_map 将此 CSV 解析为一个数组:
// parse CSV file into an array
$fileArray = array_map('str_getcsv', file($file["tmp_name"]));
这给了我以下信息:
array(3) {
[0] => array(4) {
[0] => string(4) "Name"
[1]=> string(4) "City"
[2]=> string(5) "State"
[3]=> string(6) "Country"
}
[1] => array(4) {
[0] => string(4) "Tom"
[1]=> string(7) "Jackson"
[2]=> string(11) "Mississippi"
[3]=> string(13) "United States"
}
[2] => array(4) {
[0] => string(5) "Simon"
[1]=> string(6) "Temple"
[2]=> string(12) "Pennsylvania"
[3]=> string(13) "United States"
}
我正在尝试将数组重新映射到键/值对,以便键将引用适当的标头字段。比如:
array(3) {
[0] => array(4) {
['Name'] => string(4) "Name"
['City']=> string(4) "City"
['State']=> string(5) "State"
['Country']=> string(6) "Country"
}
[1] => array(4) {
['Name'] => string(4) "Tom"
['City']=> string(7) "Jackson"
['State']=> string(11) "Mississippi"
['Country']=> string(13) "United States"
}
[2] => array(4) {
['Name'] => string(5) "Simon"
['City']=> string(6) "Temple"
['State']=> string(12) "Pennsylvania"
['Country']=> string(13) "United States"
}
我正在使用 array_walk 通过回调函数更改数组,但似乎 array_walk 在处理数组作为第三个参数时遇到问题。
// parse CSV file into an array
$fileArray = array_map('str_getcsv', file($file["tmp_name"]));
// header line
$header = $fileArray[0]; // header[0] = "[0]=>Name, [1]=>City... etc"
/* alterArray
* Update the array to key/value
*/
function alterArray(&$item, $key, $prefix) {
$item = "${prefix}[${key}]}: ${item}";
}
// use array_walks to
array_walk($fileArray, 'alterArray', $header);
// print result
print_r($fileArray);
我收到此错误:
Notice: Array to string conversion
【问题讨论】:
标签: php