我有一个像这样的数组和使用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。 如果有人能帮助我,我将不胜感激
答案 0 :(得分:7)
简单深度优先搜索:
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 />";
}
}
}
答案 1 :(得分:2)
array_walk_recursive()怎么样?它可以将函数应用于数组的每个元素:
function test_print($value, $key)
{
echo "key = $key value = $value";
}
array_walk_recursive($arr, 'test_print');
未经过测试
答案 2 :(得分:0)
我会使用while循环 - 比如
while($i < count($array)) {}