0

我有几个包含产品订单信息的 csv 文件。我的 csv 文件如下所示:

order_number,sku,qty,price_per,total_price
12345,55555,25,4,100
12346,33333,10,5,50
12347,55555,20,4,80

我在查找total_price所有交易时没有任何问题,但我如何才能找到每个产品的总数?我尝试为每个创建一个数组,但我不知道如何将skutotal_price元素绑定在一起。

更新#2

因为我不能有一个匹配键的数组,而且我无论如何都想在这里结束,我怎样才能得到这样的数组:

Array(
      [55555] => 180
      [33333] => 50
     )

如果有人对我如何制作这个数组有任何想法,那就太好了。谢谢!

更新#1

抱歉,我添加了我的代码,这里是:

foreach($files as $file){
  $fh = fopen($file, 'rb');
  while($col = fgetcsv($fh)) {
  $csv[] = $col;
  $total = array($col[27])
  }}
4

2 回答 2

0

这将做你想做的事,即创建一个数组 $totals 对 skus 的总数求和:

   $totals = array();
   foreach($files as $file) {
        $fh = fopen($file, 'rb');
        while($col = fgetcsv($fh)) {
          $csv[] = $col;
          $total = array($col[27])
          $totals[$col[1]] += $col[27];
        }
    }
于 2013-01-09T22:50:01.963 回答
0

当前答案不会产生您所追求的数组:

Array(
      [55555] => 100
      [33333] => 50
      [55555] => 80
     )

因为这无法做到——55555 不能作为密钥使用两次。另一种方法是使用以下形式的数组:

Array(
          [12345] => array("sku"=>55555,"total_price"=>100),
          [12346] => array("sku"=>33333,"total_price"=>50),
          [12347] => array("sku"=>55555,"total_price"=>80),
         )

此代码生成第二个数组:

$trans = array();
foreach($files as $file){
    $fh = fopen($file, 'rb');
    while($col = fgetcsv($fh)) {
        $trans[$col[0]] = array("sku"=>$col[0],"total_price"=>$col[27]);
    }
}

假设$col[0]是订单并且$col[1]是sku。

于 2013-01-09T22:35:46.507 回答