【问题标题】:iterate over an entire array [duplicate]遍历整个数组[重复]
【发布时间】:2012-11-16 15:39:27
【问题描述】:

可能重复:
Loop an array of array

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

数组:

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

然后得到这样的结果:

绿色 红色的 绿色 蓝色的 红色的 灰色的 黑色的 黄色 某事

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

【问题讨论】:

标签: php arrays


【解决方案1】:

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

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

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

【讨论】:

  • 查看herehere 的答案会让您受益。
  • 让人们成为 :) 但无论如何感谢您的链接
【解决方案2】:

最简单的解决方案是像这样使用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');

【讨论】:

    【解决方案3】:

    执行一次 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:使用递归函数可以做得更好,但我懒得为你写一个;)

    【讨论】:

    • 查看herehere 的答案会让您受益。
    【解决方案4】:
    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);
    

    【讨论】:

    • 查看herehere 的答案会让您受益。
    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2017-09-28
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多