PHP数组没有返回正确的值

时间:2017-09-28 16:21:11

标签: php

我有一个数组

$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

2 个答案:

答案 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解决了这个问题。