2010-12-13 143 views
2

我怎样才能获得值这个数组的:如何获得维数组中的值?

Array 
(

    [0] => 20 
    [1] => Array 
     (
      [0] => 21 
      [1] => 22 
      [2] => Array 
       (
        [0] => 23 
        [1] => Array 
         (
          [0] => 52 
          [1] => 
         ) 

       ) 

     ) 

) 

我要得到这个值:20,21,22,23和52提前

谢谢! :)

+5

*哪个*值?! – deceze 2010-12-13 03:05:58

+0

你以后哪个价值? – Phil 2010-12-13 03:06:03

+1

哪个值?哪个阵列?有4! – 2010-12-13 03:06:25

回答

0

我要得到这个值:20,21,22,23和52

译为得到所有值的数组一个原始数组的递归。使用标准array_walk_recursive功能...

 

$test_array = array(
    20, 
    array(
     21, 
     22, 
     array(
      23, 
      array(
       52, 
       null 
       ) 
      ) 
     ) 
    ); 

$array_extracted = array(); 

array_walk_recursive($test_array, function($val, $key) use (&$array_extracted) {if (!is_array($val)) $array_extracted[] = $val;}); 

print_r($array_extracted); 
/* 
gives: Array 
(
    [0] => 20 
    [1] => 21 
    [2] => 22 
    [3] => 23 
    [4] => 52 
    [5] => 
) 
*/ 


1

此代码应该这样做:

function flatten_array($a) 
{ 
    $retval = array(); 
    foreach ($a as $value) 
    { 
     if (is_array($value)) 
      $retval = array_merge($retval,flatten_array($value)); 
     else 
      $retval []= $value; 
    } 
    return $retval; 
} 
+0

你忘了返回$ retval。 – RabidFire 2010-12-13 03:17:58

+0

你的“回报”在哪里? – 2010-12-13 03:18:08

+0

哇!非常感谢。它真的有用! :) – rayss 2010-12-13 03:18:28