2011-10-19 48 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

如果我理解正確,如果它是字符串並且不希望數字鍵顯示值,那麼您希望打印鍵。糾正我,如果我錯了。 –