-1

私は CSV から PHP への操作を行っていますが、配列の値をキーとして返すことを除いて、stackoverflow で素晴らしい仕事をする関数を見つけました。これにより、配列の操作が難しくなります。

array(6) {
       [0]=>
       array(2) {
         ["Aliens: Colonial Marines: Limited Edition (Xbox 360)"]=>
         string(66) "Aliens: Colonial Marines: Limited Edition (Xbox 360)  - EU Version"
         ["€ 14.34"]=>
         string(8) "€ 7.17"
       }
       [1]=>
       array(2) {
         ["Aliens: Colonial Marines: Limited Edition (Xbox 360)"]=>
         string(46) "Arcania: Gothic 4 - Special Edition (Xbox 360)"
         ["€ 14.34"]=>
         string(8) "€ 9.56"
       }
       [2]=>
       array(2) {
         ["Aliens: Colonial Marines: Limited Edition (Xbox 360)"]=>
         string(29) "Assassin's Creed 3 (Xbox 360)"
         ["€ 14.34"]=>
         string(9) "€ 15.54"
       }
   [MORE]
     }

配列をこれに変更する方法はありますか??:

         array(6) {
       [0]=>
       array(2) {
         [0]=>
         string(66) "Aliens: Colonial Marines: Limited Edition (Xbox 360)  - EU Version"
         [1]=>
         string(8) "€ 7.17"
       }
       [1]=>
       array(2) {
         [0]=>
         string(46) "Arcania: Gothic 4 - Special Edition (Xbox 360)"
         [1]=>
         string(8) "€ 9.56"
  [MORE]
       }

ありがとうございました

編集:

     function parse_csv_file($csvfile) {
         $csv = Array();
         $rowcount = 0;
         if (($handle = fopen($csvfile, "r")) !== FALSE) {
             $max_line_length = defined('MAX_LINE_LENGTH') ? MAX_LINE_LENGTH : 10000;
             $header = fgetcsv($handle, $max_line_length);
             $header_colcount = count($header);
             while (($row = fgetcsv($handle, $max_line_length)) !== FALSE) {
                 $row_colcount = count($row);
                 if ($row_colcount == $header_colcount) {
                     $entry = array_combine($header, $row);
                     $csv[] = $entry;
                 }
                 else {
                     error_log("csvreader: Invalid number of columns at line " . ($rowcount + 2) . " (row " . ($rowcount + 1) . "). Expected=$header_colcount Got=$row_colcount");
                     return null;
                 }
                 $rowcount++;
             }
             //echo "Totally $rowcount rows found\n";
             fclose($handle);
         }
         else {
             error_log("csvreader: Could not read CSV \"$csvfile\"");
             return null;
         }
         return $csv;
     }
4

2 に答える 2

1

これ$arr_newは、必要な配列を出力する最終的な配列です。

 $arr = array(
        "0"=>array(
            "Aliens: Colonial Marines: Limited Edition (Xbox 360)"=>"Aliens: Colonial Marines: Limited Edition (Xbox 360)  - EU Version",
            "€ 14.34"=>"€ 7.17"
        ),
        "1"=>array(
            "Aliens: Colonial Marines: Limited Edition (Xbox 360)"=>"Arcania: Gothic 4 - Special Edition (Xbox 360)",
            "€ 14.34"=>"€ 9.56"
        ),
        "2"=>array(
            "Aliens: Colonial Marines: Limited Edition (Xbox 360)"=>"Assassin's Creed 3 (Xbox 360)",
            "€ 14.34"=>"€ 15.54"
        ),
    );
    foreach($arr as $key => $value)
    {
        $arr_new[] = array_values($value);
    }
    echo "<pre>";
    print_r($arr_new);
于 2013-10-04T10:19:39.967 に答える
0

array_values関数を探しています。

array_values() は、配列からすべての値を返し、配列を数値でインデックス付けします。

foreach またはarray_walkを使用して、不要なインデックスを持つすべての配列で実行します。

于 2013-10-04T10:10:18.943 に答える