2012-12-27 94 views
1

我有一個小問題即時創建多表和IM卡, 我想創建這樣的事情:PHP數組操作追加元素

1 table: [4,5,6]
2 table: [7,2,7,8]
3 table: [1,1,1]
4 table: [6,0,9]

但每表可以是不同的大小,
預期結果:

[[4,7,1,6], [5,2,1,0], [6,7,1,9], [8]] 

我試圖讓它使用for循環,但目前爲止沒有成功?

陣列應被建造這種方式:
第一個元素是所有T1 [0] + T2 [0] + T3 [0] ...
第二元件是所有T1的集合[1] + T2的集[1] + T3 [1] ...
... 等

+0

PHP不支持使用方括號對於陣列 –

+0

@PankajKhairnar:是的。其他人:Chatspeak(「你」,「你」等)不歡迎SO。 – ThiefMaster

+1

@Pankaj - 我建議你重新閱讀有關數組的PHP文檔 –

回答

4
$result = array(); 
foreach ([[4,5,6], [7,2,7,8], [1,1,1], [6,0,9]] as $key => $value) { 
    foreach($value as $key2 => $value2) { 
     $result[$key2][$key] = $value2; 
    } 
} 

var_dump($result); 
+0

這確實會產生副作用,即將最後一個數組轉換爲關鍵字「1」(索引0爲空)的關聯數組,這不完全是OP要查找的結果。 –

+0

@Asad - 通過執行$ result = array_map('array_values',$ result)可以很容易地修復這個問題。但它取決於關鍵點究竟是否真的需要 –

0
$result = array(); 
foreach (array(array(4,5,6), array(7,2,7,8), array(1,1,1), array(6,0,9)) as $k1 => $v1) { 
    foreach($v1 as $k2 => $v2){ 
     if(!isset($result[$k2])){ 
      $result[$k2] = array(); 
     } 
     $result[$k2][] = $v2; 
    } 
} 

//output: [[4,7,1,6],[5,2,1,0],[6,7,1,9],[8]] 

下面是一個示範:http://codepad.org/lxJt4zOp