-1

可能重复:
循环数组数组

我想知道是否可以遍历整个数组来显示每个这样的结果

大批:

 $input = array("a" => "green", "red", "b" => "green", "blue", "red", "c"=> array("grey",
 "black", "yellow", "red" => "something"));

然后得到这样的结果:

绿色 红色 绿色 蓝色 红色 灰色 黑色 黄色 某物

你可以说我希望显示每个数组的最终值,如果它本身不是一个值数组。

4

4 回答 4

2

您可以使用递归函数来迭代所有值。

function outputValues($arr) {
  foreach (array_values($arr) as $value) {
    if (is_array($value))
        outputValues($value);
    else
        echo $value;
  }
}

并像使用它一样outputValues($input)

于 2012-11-16T15:43:29.740 回答
0

做一个 foreach 并检查数组。

<?php

$input = array("a" => "green", "red", "b" => "green", "blue", "red", "c"=> array("grey",
 "black", "yellow", "red" => "something"));

foreach( $input as $value )
{
    if( is_array( $value ) )
    {
        foreach( $value as $subvalue )
        {
            echo $subvalue . ' ';
        }
    }
    else
    {
        echo $value . ' ';
    }
} 

?>

PS:使用递归函数可以做得更好,但我懒得为你写一个;)

于 2012-11-16T15:42:29.137 回答
0
function p($array) {
    if( !is_array( $array)) {
        echo $array . ' ';
    }else{
        foreach ($array as $k => $v) {
            if(!is_array($v)){
                echo $v . ' ';
            }else{
                p($v)
            }
        }
    }
}

p($array);
于 2012-11-16T15:48:11.750 回答
0

最简单的解决方案是array_walk_recursive这样做:

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red", "c"=> array("grey", "black", "yellow", "red" => "something"));

array_walk_recursive($input, function($value){
    echo $value . " ";
});


然后输出:
green red green blue red grey black yellow something

这是 php 5.4 我相信,旧版本的 php 你需要将函数名作为字符串并使用然后创建函数

较旧的 PHP 版本:

function myfunction($value){
    echo $value . " ";
}
array_walk_recursive($input, 'myfunction');
于 2012-11-16T15:58:49.050 回答