2013-10-04 3 views
-1

CSV를 PHP로 조작하고 있는데, 배열을 조작하기 어려운 키로 배열의 값을 반환한다는 점을 제외하고는 stackoverflow에서 훌륭한 작업을 수행하는 함수를 발견했습니다 .배열의 키 값을 int로 제공

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; 
    } 
+0

을 원하는입니까? 게시하십시오 ... – Mark

+0

'foreach ($ myArray as & $ value) {$ value = array_values ​​($ value); } unset ($ value);' –

+0

@MarkBaker는 원래 함수를 수정하는 것이 더 나은 옵션 인 것처럼 보이기 때문에 실행 시간이 더 적을 것입니다. 그러나 당신의 솔루션은 또한 실행 가능합니다. – Mark

답변

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); 
0

당신은 array_values 기능을 찾고 있습니다 .

array_values ​​() 배열의 모든 값을 반환하고 배열에 숫자를 표시합니다.

원하지 않는 색인이있는 모든 배열에서 foreach 또는 array_walk과 같이 실행하십시오.

+0

그 트릭을하지만, 전체 연관 배열을하는 무언가를 갖는 것이 낫습니다! 감사 – Callombert