将所有值转换为单个数组

时间:2011-02-23 05:52:53

标签: php arrays

我有以下数组

Array ( [0] => Array ( [0] => 5 ) [1] => Array ( [0] => 6 [1] => 7 ) ) 

现在我只想要这个二维数组的值

结果应为array(5,6,7)

5 个答案:

答案 0 :(得分:5)

根据你的看法,黑客/整洁的技巧;)

$result = call_user_func_array('array_merge', $a);

答案 1 :(得分:0)

$result = array();
foreach($parentArray as $pa)
{
  if(is_array($pa))
     $result= array_merge($result, $pa);
  else
     $result[] = $pa;

}

使用$result

答案 2 :(得分:0)

您正在寻找array_values(),它返回所有数组值的数组,sans-keys。

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

<强>更新

或者对于已经是多维的数组,您可以使用以下递归函数(从http://davidwalsh.name/flatten-nested-arrays-php借用):

function array_flatten($array,$return)
{
  for($x = 0; $x <= count($array); $x++)
  {
    if(is_array($array[$x]))
    {
      $return = array_flatten($array[$x],$return);
    }
    else
    {
      if($array[$x])
      {
        $return[] = $array[$x];
      }
    }
  }
  return $return;
}

答案 3 :(得分:0)

像这样的东西

array_merge($a[0], $a[1]);

答案 4 :(得分:0)

function flattenArray($array) {
   $flattened = array();
   foreach($array as $value) {
       if (is_array($value)) {
           $flattened = array_merge($flattened, flattenArray($value));
       } else {
           $flattened[] = $value;
       }
   }
   return $flattened;
}

$array = array(1, array(2, 3), array(4, array(5, 6)));
var_dump($array, flattenArray($array));

输出

array(3) {
  [0]=>
  int(1)
  [1]=>
  array(2) {
    [0]=>
    int(2)
    [1]=>
    int(3)
  }
  [2]=>
  array(2) {
    [0]=>
    int(4)
    [1]=>
    array(2) {
      [0]=>
      int(5)
      [1]=>
      int(6)
    }
  }
}
array(6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}

CodePad