在打印值时防止打​​印键索引 - PHP

时间:2011-10-19 11:06:26

标签: php arrays foreach

嗨我有这样的数组:

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()**
);

但我不想定义额外的空数组!

和平了!

2 个答案:

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

相关问题