-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

最も簡単な解決策は、次の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

これはphp5.4だと思います。古いバージョンのphpでは、関数名を文字列として使用し、関数を作成する必要があります。

古いバージョンのPHP:

function myfunction($value){
    echo $value . " ";
}
array_walk_recursive($input, 'myfunction');
于 2012-11-16T15:58:49.050 に答える
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

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 に答える