嗨我有这样的数组:
array(
'Home' => array(
'About',
'Contact'
),
'News'
);
我写这个来印刷它们:
function show($arr){
foreach($arr as $key => $value){
echo "\n<ul>\n<li>\n" . $key;
if( ! empty($value)){
if(is_array($value)){
show($value);
}else{
echo $value;
}
}
echo "\n</li>\n</ul>\n";
}
}
我的问题是当我尝试echo $value
它会打印出类似这样的内容:
Home
0About
1Contact
0News
我尝试echo $key
echo $value
现在在这里,我知道它是在新闻字段或任何不是数组的字段之前写的关键索引。我将单个字段改为:
array(
'Home' => array(
'About' => **array()**,
'Contact' => **array()**
),
'News' => **array()**
);
但我不想定义额外的空数组!
和平了!
答案 0 :(得分:0)
function show($arr){
foreach($arr as $key => $value){
echo "\n<ul>\n<li>";
if( ! empty($value)){
if(is_array($value)){
echo '\n'.$key;
show($value);
}else{
echo $value;
}
}
echo "\n</li>\n</ul>\n";
} }
我会说你必须改变你回声的位置($ key)。如果它不是数组,你不关心密钥,对吧?
答案 1 :(得分:0)
function show($arr){
foreach($arr as $key => $value){
if (is_numeric($key))
echo "\n<ul>\n<li>\n";
else
echo "\n<ul>\n<li>\n" . $key;
if( ! empty($value)){
if(is_array($value)){
show($value);
}else{
echo $value;
}
}
echo "\n</li>\n</ul>\n";
}
}
我想is_numeric可以解决你的问题。