2014-10-09 150 views
0

全部,有没有更简单的方法来取消嵌套数组?

你将如何“取消嵌套”数组以便更容易循环?

你会如何转换下面的阵列...

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [key1] => data1 
        [key2] => data2 
        [key3] => data3 
       ) 
     ) 
    [1] => Array 
     (
      [0] => Array 
       (
        [key1] => data4 
        [key2] => data5 
        [key3] => data6 
       ) 

     ) 
) 

的东西管理这样的....?

Array 
(
    [0] => Array { 
     [key1] => data1 
     [key2] => data2 
     [key3] => data3 
     } 
    [1] => Array (
     [key1] => data4 
     [key2] => data5 
     [key3] => data6 
     ) 
) 
+2

您是如何在第一个地方创建数组的?这可能比随后重构它更容易 – 2014-10-09 15:56:14

+0

您需要一个简单的循环。有什么问题?你的代码在哪里? – 2014-10-09 15:57:42

+0

为了取消这个数组的嵌套,你将不得不处理它,所以好处在哪里? – RiggsFolly 2014-10-09 15:58:04

回答

6

是的,有!

$newArray = array_map('end', $oldArray); 

此代码简单地适用end到源阵列的每个元素,并收集结果到一个新的数组。例如,如果这样的元件是

Array 
    (
     [0] => Array 
      (
       [key1] => data1 
       [key2] => data2 
       [key3] => data3 
      ) 
    ) 

end结果将是

 Array 
      (
       [key1] => data1 
       [key2] => data2 
       [key3] => data3 
      ) 

基本上end“解开”内阵列,从而摆脱一个嵌套级的。由于总是只有一个子阵列,因此您也可以使用currentreset来产生相同的效果。

+0

不错!函数式编程ftw。 – 2014-10-09 16:06:38

+0

我想我只是不明白他为什么使用'结束'作为回调,或者为什么这会起作用。 – 2014-10-09 16:13:28

+0

令人震惊。谢谢。 – Darius 2014-10-09 16:13:30

相关问题