可能重复:
Loop an array of array
我想知道是否有可能迭代整个数组,显示每个结果,如
数组:
$input = array("a" => "green", "red", "b" => "green", "blue", "red", "c"=> array("grey",
"black", "yellow", "red" => "something"));
然后得到如下结果:
绿色 红色 绿色 蓝色 红色 灰色 黑色 黄色 东西
你可以说我希望显示每个数组的最终值,如果它不是一个值数组本身。
答案 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');