Запрет печати ключевых индексов при печати значения - PHP - PullRequest
0 голосов
/ 19 октября 2011

Привет, у меня есть такой массив:

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 голосов
/ 19 октября 2011
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 голосов
/ 19 октября 2011
 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";
     } }

Я бы сказал, что вы должны сменить место своего эха (клавиши $). Если это не массив, вам не важен ключ, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...