Php 不使用foreach递归遍历多维数组

Php 不使用foreach递归遍历多维数组,php,recursion,multidimensional-array,Php,Recursion,Multidimensional Array,我有一个这样的数组和使用foreach循环的代码 $arr = array( array ( array( 'CAR_TIR', 'Tires', 100 ), array( 'CAR_OIL', 'Oil', 10 ), array( 'CAR_SPK', 'Spark Plugs', 4 ) ), array ( array( 'VAN_TIR', 'Tires', 120 ), array(

我有一个这样的数组和使用foreach循环的代码

$arr = array( array ( array( 'CAR_TIR', 'Tires', 100 ),
           array( 'CAR_OIL', 'Oil', 10 ),
           array( 'CAR_SPK', 'Spark Plugs', 4 )
          ),
       array ( array( 'VAN_TIR', 'Tires', 120 ),
           array( 'VAN_OIL', 'Oil', 12 ),
           array( 'VAN_SPK', 'Spark Plugs', 5 )
          ),
       array ( array( 'TRK_TIR', 'Tires', 150 ),
           array( 'TRK_OIL', 'Oil', 15 ),
           array( 'TRK_SPK', 'Spark Plugs', 6 )
          )
      );


function recarray($array)
{
    foreach($array as $key=>$value)
    {
        if(is_array($value))
        {
            RecArray($value);
        }
        else
        {
            echo "key = $key value = $value";
       }
    }
}
recarray($arr);
我必须使用递归遍历数组,而不使用foreach。

怎么样?它可以将函数应用于数组的每个元素:

function test_print($value, $key)
{
    echo "key = $key value = $value";
}

array_walk_recursive($arr, 'test_print');

未测试

我会使用类似while的循环

while($i < count($array)) {}
while($i
简单的深度优先搜索:

function DFS($array) {      
    for ($i = 0; $i < count($array); $i ++) {
        if (is_array($array[$i])) {
            DFS($array[$i]);
        }
        else {
            echo "key: ".$i.", value: ".$array[$i]."<br />";
        }
    }
}
函数DFS($array){
对于($i=0;$i”;
}
}
}

不使用foreach
-为什么
foreach
是一个善良而温柔的情人。。。这对我来说有家庭作业的味道,如果是,请贴上这样的标签。是的,这是一种家庭作业。多亏了alotAlso,当您实际上不需要从数组的每个位置获取所有值,或者只想从子数组中删除项时,使用foreach遍历数组是不节省资源的。phpFYI中没有
.length
属性:for($i=0;$i