2011-10-19 49 views
0

您好我有一个这样的数组:阻止打印的关键指标,而打印值 - PHP

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
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"; 
    } } 

我会说你必须改变你的地方回声($键)。如果它不是一个数组,你不关心密钥,对吧?

+0

我试过了,但它会让每一件事退后一场!我的意思是它会像这样e。 G。 '关于我'和下一行'我们' – MahanGM

+0

再试一次,我改变了一些东西,忘了html – dyesdyes

+0

哦,是的,我会的。 – MahanGM

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应该可以解决你的问题。

+0

如果我有他们将以数字开头的字段,那么什么? – MahanGM

+0

如果我理解正确,如果它是字符串并且不希望数字键显示值,那么您希望打印键。纠正我,如果我错了。 –