【问题标题】:PHP - Create an array based on the first value from CSVPHP - 根据 CSV 中的第一个值创建一个数组
【发布时间】:2018-06-19 04:08:22
【问题描述】:

我有一个这样的 csv。

我创建了一个 CLI 脚本,它将读取 CSV 并根据帐户 ID、地址 ID 和 SKU 创建一个数组。

我会这样执行脚本

php csvimport.php 10 /var/www/test/testcsv.csv

在上面的代码中,10 是脚本的极限,它将取前 10 个然后它会创建一个数组,然后它会寻找下一个 10 并创建另一个数组。这里我需要处理一个条件,即批次的第一行值应该与接下来的 9 行匹配。如果第一行之后没有匹配,则将该行创建为单独的数组。

我需要预期的输出。每次它都会采取限制并根据限制的第一行比较行。

array[A1][ad1] => SKU1,SKU2,SKU3,SKU4,SKU5,SKU25,SKU26
array[A1][ad12] => SKU1
array[A1][ad2] =>  SKU3,SKU4,SKU5,SKU6,SKU7,SKU8
array[A2][ad2-1] =>  SKU13,SKU14,SKU15,SKU16,SKU17,SKU18
$file = '/var/www/html/var/csv/cv1.csv';
$arr=array();
$row = 1;
$i = 1;
$limit = 10;
if (($handle = fopen($file, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        $row++;
        for ($c = 0; $c < $num; $c++) {
            $arr[$row][$data[0]][$data[1]]= $data[$c];
            if ($i++ == $limit) break;
        }
    }
    fclose($handle);
}

echo "<pre>";
print_r($arr);
exit;

【问题讨论】:

  • 您尝试过任何代码吗?
  • 你在“csvimport.php”中试过什么代码?
  • @LovepreetSingh 更新了我的代码
  • 目前它是这样来的 [1] => Array ( [A1] => Array ( [ad1] => SKU1 ) ) [2] => Array ( [A1] => Array ( [ad1] => SKU2 ) )

标签: php arrays csv foreach


【解决方案1】:

for 循环内需要更新代码。更新为:

for ($c = 0; $c < $num; $c++) {
    if (isset($arr[$data[0]]) && isset($arr[$data[0]][$data[1]])) {
        $arr[$data[0]][$data[1]] .= "," . $data[$num - 1];
    } else {
        $arr[$data[0]][$data[1]] = $data[$num - 1];
    }
    if ($i++ == $limit)
        break;
}

【讨论】:

  • 数组是这样来的,它取的是账户id和地址id,而不是只取SKU[A1] => Array ( [ad1] => Array ( [0] => A1 [1 ] => ad1 [2] => SKU1 [3] => A1 [4] => ad1 [5] => SKU2 [6] => A1 [7] => A1 [8] => ad1 [9] = > SKU4)
  • 看起来更好,但结果现在是数组[A1][ad1] => A1,ad1,SKU1,A1,ad1,SKU2,A1,A1,ad1,SKU4,A1,ad1, SKU5,A1,ad1,SKU25,A1,ad1,SKU26 预期数组[A1][ad1] => SKU1,SKU2,SKU3,SKU4,SKU5,SKU25,SKU26
猜你喜欢
  • 1970-01-01
  • 2016-10-22
  • 2022-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
  • 2021-12-05
相关资源
最近更新 更多