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、各製品の合計を見つけるにはどうすればよいですか?skuそれぞれに配列を作成しようとしましたが、要素とtotal_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

現在の回答では、目的の配列は生成されません。

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

これはできないため、55555をキーとして2回使用することはできません。別の方法は、次の形式の配列を持つことです。

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

このコードは、2番目の配列を生成します。

$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]注文であり、 SKUであると仮定し$col[1]ます。

于 2013-01-09T22:35:46.507 に答える
0

これにより、必要な処理が実行されます。つまり、skusの合計を合計する配列$totalsが作成されます。

   $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 に答える