我有一个数组
$row['sku'] = '12345';
$row['name'] = 'Spaceballs';
当我var_dump
整个数组时,我得到所有的值。但如果我尝试$row['sku']
,我会NULL
。知道什么可能导致这个问题吗?
编辑: 我正在尝试对相当大的产品CSV进行排序。有问题的代码在这里:
$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
有问题的CSV是这样的:
sku,name,etc
12345,Spaceballs,etc
答案 0 :(得分:0)
因为你没有显示你从var_dump(var_dump($row,$row['sku']);
)得到的东西而且没有提供完整的PHP脚本,所以找不到问题在哪里是不可能的。
对我而言,它没有问题:
source.csv:
sku,name
12345,Spaceballs
321,test1
654,test2
PHP脚本:
<?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!";
答案 1 :(得分:0)
我挖了一下,系统传输文件并不知道如何处理UTF-8编码并在文件的开头添加了一些垃圾字符。我得到的输出将显示两个sku元素。 var_dump给了我第一个元素的字符串(6)和第二个元素的字符串(3),证实了这一点。快速浏览dos2unix解决了这个问题。