2012-12-27 96 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