迭代整个数组

时间:2012-11-16 15:39:28

标签: php arrays

  

可能重复:
  Loop an array of array

我想知道是否有可能迭代整个数组,显示每个结果,如

数组:

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

然后得到如下结果:

绿色 红色 绿色 蓝色 红色 灰色 黑色 黄色 东西

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

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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:使用递归函数可以做得更好,但是我懒得为你写一个;)

答案 2 :(得分: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);

答案 3 :(得分: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');