这是我的阵列代码...
$data = array(
'data_1',
'data_2',
'data_3',
'data_4',
'data_5' => array(
'data_5_1',
'data_5_2'
)
);
我想像这样:-
data_1
data_2
data_3
data_4
data_5
data_5_1
data_5_2
这是我尝试自行编写的代码,但显示错误
foreach($data as $da){
echo $da."<br>";
}
发现这样的错误
data_1
data_2
data_3
data_4
Notice: Array to string conversion in filename.php on line 3
Array
请解决此问题并使用echo not print_r
答案 0 :(得分:3)
最好通过递归函数来实现,以便您可以处理任何级别的嵌套数组:
function display_list($array) {
foreach ($array as $k => $v) {
if (is_array($v)) {
echo "$k\n";
display_list($v);
}
else {
echo "$v\n";
}
}
}
display_list($data);
输出:
data_1
data_2
data_3
data_4
data_5
data_5_1
data_5_2
答案 1 :(得分:2)
您可以使用迭代器:
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($data)) as $item)
echo "$item<br>", PHP_EOL;
根据注释中的要求,如果您希望根据类型键入键或值,则可以使用标志SELF_FIRST
和三元运算符:
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($data), RecursiveIteratorIterator::SELF_FIRST) as $key => $item)
echo (is_scalar($item) ? $item : $key) . '<br>', PHP_EOL;
答案 2 :(得分:1)
foreach ($data as $val) {
if(is_array($val)){
foreach ($val as $row) {
echo "<br> ".$row;
}
}
else{
echo "<br>".$val;
}
}