実現したいこと(PHP)
//カテゴリー情報のcsv(cat.csv) 1,1,野球 1,2,テニス 10,,野球 11,,バドミントン 1,3,アイスホッケー
このcat.csvを元にproduct.csvの情報を変更する
//プロダクト情報のcsv(product.csv) category1,category2,product_id,name //category2は削除 1,1,100,ボール //1,1はcat.csvによると1,1の組み合わせは「野球」なので1,2列目を結合し「野球」に変更 1,2,101,ラケット 10,,102,グローブ 11,,103,ネット 1,3,104,マスク ↓ (変更後) category1,product_id,name 野球,100,ボール テニス,101,ラケット 野球,102,グローブ バドミントン,103,ネット アイスホッケー,104,マスク
にしたいと思っております.
現状
$file = "./product.csv"; $product_csv = get_csv_data($file); $file = "./cat.csv"; $cat_csv = get_csv_data($file); //product.csvのカテゴリナンバー1,2を抽出し配列に格納 $product_target=array(); foreach($product_csv as $row) { $_row=array(); for($_i=0;$_i<count($row);$_i++) { if($_i==0 || $_i==1) { $_row[]=$row[$_i]; } } $product_target[] = $_row; } //cat.csvのカテゴリナンバーとカテゴリ名を配列に格納 $cat_target=array(); foreach($cat_csv as $row) { $_row=array(); for($_i=0;$_i<count($row);$_i++) { $_row[]=$row[$_i]; } $cat_target[] = $_row; } //csvファイル上書き(後々使えそうなコード) // $res_file = fopen($path_parts['filename'].".csv", 'w+'); // foreach($target as $ary_csv_line){ // fputcsv($res_file, $ary_csv_line); // } // fclose($res_file); function get_csv_data($filename) { $fp = new SplFileObject($filename); $fp->setFlags(SplFileObject::READ_CSV); $data = array(); foreach ($fp as $line) { $data[] = $line; } return $data; }
それぞれの配列を取ってこれましたが、これをどう比較して上書きしていくのかが不明です。。
よろしくお願いいたします
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。