2015-04-20 69 views
1

我手頭有以下數組。我必須遍歷下面的數組,以便它將創建另一個數組,其索引爲每個子數組的第0個索引,位於新數組的第0個索引中,等等。在PHP中操作多維數組

當前陣列

Array 
    (
     [0] => Array 
      (
       [0] => 1 
       [1] => 2 
       [2] => 3 
      ) 

     [1] => Array 
      (
       [0] => 1 
       [1] => 2 
       [2] => 3 
      ) 

     [2] => Array 
      (
       [0] => 1 
       [1] => 2 
       [2] => 3 
      ) 

    ) 

所需的輸出

Array 
    (
     [0] => Array 
      (
       [0] => 1 
       [1] => 1 
       [2] => 1 
      ) 

     [1] => Array 
      (
       [0] => 2 
       [1] => 2 
       [2] => 2 
      ) 

     [2] => Array 
      (
       [0] => 3 
       [1] => 3 
       [2] => 3 
      ) 

    ) 

回答

5

對於PHP版本> = 5.5.0你有array_column()功能:

$newArray = array_column(
    $oldArray, 
    0 
); 

對於早期版本PHP的,你可以使用array_map()

$column = 0; 
$newArray = array_map(
    function ($value) use ($column) { 
     return $value[$column]; 
    }, 
    $oldArray 
); 
+0

謝謝,馬克,你讓我出去一個大爛攤子。讚賞 –

0

這還不配發信息的一起工作......所以,這樣的:

$newArray = []; 
foreach($topArray as $idxTop => $valTop){ 
    if(is_array($valTop)){($newArray[] = $valTop[0];} 
} 
0
$input = [ 
    0 => [1, 2, 3], 
    1 => [1, 2, 3], 
    2 => [1, 2, 3] 
]; 

$output = [ 
    array_column($input, 0), 
    array_column($input, 1), 
    array_column($input, 2) 
]; 

print_r($output); 

// Output: 
// 
// Array 
// (
//  [0] => Array 
//   (
//    [0] => 1 
//    [1] => 1 
//    [2] => 1 
//  ) 

//  [1] => Array 
//   (
//    [0] => 2 
//    [1] => 2 
//    [2] => 2 
//  ) 

//  [2] => Array 
//   (
//    [0] => 3 
//    [1] => 3 
//    [2] => 3 
//  ) 

//)