2017-09-28 3 views
0

Ich habe ein ArrayPHP Array nicht korrekten Wert zurückkehr

$row['sku'] = '12345'; 
$row['name'] = 'Spaceballs'; 

Wenn ich das ganze Array var_dump, erhalte ich alle Werte. Aber wenn ich versuche, nur $row['sku'] zu bekommen, bekomme ich NULL. Irgendeine Idee, was dieses Problem verursachen könnte?

EDIT: Ich versuche, eine ziemlich große Produkt CSV zu sortieren. Der betreffende Code ist hier:

$fieldColumns = fgetcsv($file); // Getting the first row with column descriptors 
$r = fgetcsv($file); // This is looped, grabs the next row containing values 
$row = array_combine($fieldColumns, $r); // Merging the two arrays 
var_dump($row,$row['sku']);die(); // Exactly like in my code, the 'sku' is dumping NULL 

Die CSV in Frage wie diese ist:

sku,name,etc 
12345,Spaceballs,etc 
+4

Können Sie bitte ein reproduzierbares Beispiel liefern? https://3v4l.org/K23vE dort nicht reproduzierbar. – chris85

+0

zeigen Sie uns den vollständigen Code –

+0

vielleicht haben Sie das Array woanders überschrieben? – marmeladze

Antwort

0

Weil Sie zeigen nicht, was man von var_dump bekommen (var_dump($row,$row['sku']);) und bieten nicht die volle PHP-Skript ist es unmöglich herauszufinden, wo ein Problem ist.

Bei mir funktioniert es ohne Probleme:

source.csv:

sku,name 
12345,Spaceballs 
321,test1 
654,test2 

PHP-Skript:

<?php 
if (false !== ($file = fopen('source.csv', 'r'))) { 
    $header = fgetcsv($file); 
    while ($row = fgetcsv($file)) { 
     $row = array_combine($header, $row); 
     var_dump($row, $row['sku']); 
    } 
} else 
    echo "Can't open the CSV file!"; 
0

Ich kramte und das System die Dateien Übertragung wusste nicht, wie Um die UTF-8-Codierung zu verarbeiten, wurde am Anfang der Datei ein Junk-Zeichen hinzugefügt. Die Ausgabe, die ich bekommen würde, würde zwei sku Elemente zeigen. Der var_dump gab mir eine Zeichenfolge (6) für das erste Element und eine Zeichenfolge (3) für die zweite, was dies bestätigt. Ein kurzer Durchlauf durch dos2unix behob das Problem.