可能重复:
循环数组数组
我想知道是否可以遍历整个数组来显示每个这样的结果
大批:
$input = array("a" => "green", "red", "b" => "green", "blue", "red", "c"=> array("grey",
"black", "yellow", "red" => "something"));
然后得到这样的结果:
绿色 红色 绿色 蓝色 红色 灰色 黑色 黄色 某物
你可以说我希望显示每个数组的最终值,如果它本身不是一个值数组。
您可以使用递归函数来迭代所有值。
function outputValues($arr) {
foreach (array_values($arr) as $value) {
if (is_array($value))
outputValues($value);
else
echo $value;
}
}
并像使用它一样outputValues($input)。
做一个 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:使用递归函数可以做得更好,但我懒得为你写一个;)
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);
最简单的解决方案是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');