一尘不染

CSV到关联数组

php

我已经看到了许多有关如何获取CSV文件然后创建带有标题作为键的关联数组的示例。

例如:

Brand,Model,Part,Test
Honda,Civic,123,244
Honda,Civic,135,434
Toyota,Supra,511,664

它会创建一个Array,如 Array[$num][$key]这里$key将是品牌,型号,部件,测试。

因此,如果我想访问测试值“ 434”,则必须循环数组中的每个索引,然后忽略所有非本田品牌和任何非思域车型


我需要做的是最直接地访问值,而不是通过遍历每个$ num索引的for循环来运行。我希望能够通过以下方式访问值测试“ 434”:

Array['Honda']['Civic']['135']

或通过遍历所有本田车型来控制for语句……

foreach $model in Array['Honda']

至少我需要能够浏览一个已知品牌的每个模型,并访问每个模型的所有相关信息。

编辑:

只是为了确认我正在设置一个示例。我的实际数据具有以下标题:

brand model part price shipping description footnote

我需要访问其中的所有信息(价格,运费,说明,脚注)


阅读 238

收藏
2020-05-29

共1个答案

一尘不染

逐行运行csv文件,然后插入到数组中,如下所示:

$array = $fields = array(); $i = 0;
$handle = @fopen("file.csv", "r");
if ($handle) {
    while (($row = fgetcsv($handle, 4096)) !== false) {
        if (empty($fields)) {
            $fields = $row;
            continue;
        }
        foreach ($row as $k=>$value) {
            $array[$i][$fields[$k]] = $value;
        }
        $i++;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
2020-05-29