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

:それはこのような何かを印刷しますがここに来て、Newsフィールドの前に書き込むキーインデックスか、配列でないフィールドがあることを理解しました。

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

私はそれを試しましたが、それはすべてのものを1つのフィールドを後退させるでしょう!私はそれがこのeのようになることを意味します。 g。 'AboutMe'と次の行 'Us' – 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"; 
} 
} 

私はあなたの問題を解決するはずです。

+0

私は彼らが数字で始めるフィールドを持っていた場合は何ですか? – MahanGM

+0

私が正しく理解していれば、文字列で数値キーを表示したくない場合は、キーを印刷したいと思っています。私が間違っていれば私を修正してください。 –