如何在PHP中打破数组?

时间:2012-03-07 13:19:34

标签: php arrays multidimensional-array

我想转换这个数组......

Array
(
[0] => Array
    (
        [1] => A1
        [2] => A11
        [3] => A111
    )

[1] => Array
    (
        [4] => A2
        [5] => A22
    )

[2] => Array
    (
        [6] => A3
        [7] => A33
    )

 )

作为

Array
(    
 [0] => A1
 [1] => A11
 [2] => A111
 [3] => A2
 [4] => A22  
 [5] => A3
 [6] => A33
)

任何人都可以指导我吗?

4 个答案:

答案 0 :(得分:4)

“Flatten”是您正在寻找的单词 - 您想要展平此数组。

php手册的评论中有一些示例代码:

http://php.net/manual/en/function.array-values.php

/** 
 * Flattens an array, or returns FALSE on fail. 
 */ 
function array_flatten($array) { 
  if (!is_array($array)) { 
    return FALSE; 
  } 
  $result = array(); 
  foreach ($array as $key => $value) { 
    if (is_array($value)) { 
      $result = array_merge($result, array_flatten($value)); 
    } 
    else { 
      $result[$key] = $value; 
    } 
  } 
  return $result; 
} 

答案 1 :(得分:1)

您可以执行类似

的操作
$flattened = call_user_func_array('array_merge', $your_array);

请注意,这要求您的数组索引具有数值才能正常工作。但看起来这不是问题。 :)尽管如此,它也不会保留原始索引 - 它只会在最后处理新值。

答案 2 :(得分:1)

$result = array_reduce($original, 'array_merge', array());

这相当于函数式编程中的fold。另请参阅array_reduce上的PHP手册。


如果您想保留 key-> value 绑定,请使用以下简单函数替换array_merge

function array_merge_with_keys($a, $b) {
  foreach($b as $key => $val) {
    $a[$key] = $val;
  }
  return $a;
}

答案 3 :(得分:1)

使用此

$newarray = array();
foreach($array as $subarray) {
    foreach ($subarray as $key=>$value) {
        $newarray[$key] = $value;
    }
}