Ich habe eine CSV-Datei. Die erste Zeile enthält Kopfzeileninformationen.Verwenden von Array-Parameter in Array_walk Callback
Unten ist ein Auszug der Datei (Kommentare hinzugefügt).
Name, City, State, Country // header line
Tom, Jackson, Mississippi, United States // line 1
Simon, Temple, Pennsylvania, United States // line 2... etc...
Ich bin Parsen diese CSV in ein Array mit array_map:
// parse CSV file into an array
$fileArray = array_map('str_getcsv', file($file["tmp_name"]));
die mir die gibt folgende:
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"
}
Ich versuche, die Array-Taste neu zuordnen/Wertpaare, so dass der Schlüssel das entsprechende Kopfzeilenfeld referenziert. So zum Beispiel:
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"
}
Ich array_walk mit dem Array mit einer Callback-Funktion zu ändern, aber es scheint, dass array_walk Problemen bei der Verarbeitung als dritte Argument ist ein Array mit.
// 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);
Ich erhalte diese Fehlermeldung:
Notice: Array to string conversion