2012-03-08 94 views
1

我有以下列格式的數組:重新排列多維數組

Array (
    [0] => Array 
     (
      [0] => a 
      [1] => b 
      [2] => c 
     ) 
    [1] => Array 
     (
      [0] => d 
      [1] => e 
      [2] => f 
     ) 
    [2] => Array 
     (
      [0] => 0 
      [1] => 0 
      [2] => 0 
     ) 
    [3] => Array 
     (
      [0] => 100 
      [1] => 200 
      [2] => 300 
     ) 
) 

所述第一陣列(外)中的索引,即0爲名稱,1型,2爲誤差和3的大小。

我不得不重新安排該數組中的格式如下:

Array 
(
    [0] => Array 
     (
      [name] => a 
      [type] => d 
      [error] => 0 
      [size] => 100 
     ) 
    [1] => Array 
     (
      [name] => b 
      [type] => e 
      [error] => 0 
      [size] => 200 
     ) 
    [2] => Array 
     (
      [name] => c 
      [type] => f 
      [error] => 0 
      [size] => 300 
     ) 
) 

有沒有弄清楚這個任何短方法?

回答

3

您可以使用array_map

 
// $array is your array 
$new_array = array_map(null, $array[0], $array[1], $array[2], $array[3]); 
// Then, change keys 
$new_array = array_map(function($v) { 
    return array(
    'name' => $v[0], 
    'type' => $v[1], 
    'error' => $v[2], 
    'size' => $v[3] 
); 
}, $new_array); 

一個簡單的lo op雖然可能會更快。

編輯:說明

第一次調用array_map,如所描述here重組陣列和改變鍵:

 
Input: array('foo1', 'bar1'), array('foo2', 'bar2') 
Output: array('foo1', 'foo2'), array('bar1', 'bar2') 

注意null值作爲回調。

然後第二個調用只是在這裏改變鍵作爲OP想要的,用關聯的替換索引數組。

+0

你能解釋一下嗎? – 2012-03-08 05:46:56

+0

@Guillaume Poussel感謝您的代碼! ! :) – kushalbhaktajoshi 2012-03-08 05:48:11

+0

@OM永恆:我會補充一點解釋。 – 2012-03-08 06:46:44

3

你可以用好醇做到這一點」老式循環:

function extract_values($array) { 

    $i = 0; 
    $len = count($array[0]); 
    $result = array(); 

    while($i++ < $len) { 
    $result[] = array(
     'name' => array[0], 
     'type' => array[1], 
     'error' => array[2], 
     'size' => array[3] 
    ); 
    } 

    return $result; 
} 

假設你上面描述的數組存儲在一個名爲$my_array變量,你可以與改造它:

$my_array = extract_values($my_array); 
+0

我沒有得到這些數組數組[0],數組[1],數組[2]和數組[3]。 。你什麼意思 ? ?我怎樣才能得到這些數組? ? – kushalbhaktajoshi 2012-03-08 05:29:25

+0

簡單,你'調用extract_values($ _ FILE ['filename']);'因爲它看起來像你想組合文件數組。 Ofc你必須複製發佈的'extract_value'代碼。 – DdD 2012-03-08 05:32:06

+0

我已經調整了我的回答來說明@Dmitri的建議。往上看! – rjz 2012-03-08 05:37:42