从CSV创建的多维ARRAY中选择VALUE的问题

时间:2018-02-06 18:44:45

标签: php multidimensional-array

所以,我得到了一个我在PHP中正确导入的CSV文件。

function csv_to_array($filename='', $delimiter=';')
{
    if(!file_exists($filename) || !is_readable($filename))
        return FALSE;

    $header = NULL;
    $data = array();
    if (($handle = fopen($filename, 'r')) !== FALSE)
    {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
        {
            if(!$header)
                $header = $row;
            else
                $data[] = array_combine($header, $row);
        }
        fclose($handle);
    }
    return $data;
}


echo '<pre>';
$product_csv = csv_to_array("$underfolder/$value");
print_r($product_csv);

echo '</pre>';

这样可以显示结果:

Array (
  [0] => Array
      (
          [Name] => product name xyz
          [Description] => der trefa a as sadfse
          [TAGS] => tag1 tag2 tag3
          [360] => yes
          [VR] => no
      )

)

但我如何回应$product_csv的值?就像我想打印出“产品名称xyz”一样?我试过echo $product_csv["0"]['Name'],但没有任何结果......

var_dump(array_keys($product_csv[0]));给了我:

array(5) { [0]=> string(7) "Name" [1]=> string(11) "Description" [2]=> string(4) "TAGS" [3]=> int(360) [4]=> string(2) "VR" }

1 个答案:

答案 0 :(得分:3)

正如您在var_dump(array_keys($product_csv[0]));输出中看到的那样:string(7) "Name",必须有3个不可见字符,因为Name只有4个字符而不是7个。

尝试通过替换:

来修剪它们
$header = $row;

使用:

$header = array_map('trim', $row);

很可能是Byte Order Mark (BOM)。如果您要创建此文件,请检查编辑器以查看它是否使用BOM保存它,如果可能,请将其禁用。