продолжайте проверять, является ли значение в массиве массивом - PullRequest
0 голосов
/ 23 июня 2019

Я хочу создать цикл, который печатает массив как '', но также продолжает проверять, является ли значение также массивом, так что я тоже могу проходить через этот массив.

Но я неполностью понимаю, как я могу продолжать проверять, является ли значение массивом без использования очень большого количества операторов if.

Мой массив:

$stuff = array('germany', 'java', 'help', array('hello', 'help', array('save', 'me', 'python')));

Вывод:

<ul>
    <li>germany</li>
    <li>java</li>
    <li>help</li>
    <ul>
        <li>hello</li>
        <li>help</li>            
        <ul>
            <li>save</li>        
            <li>me</li>        
            <li>python</li>        
        </ul>
    </ul>
</ul>

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Вы можете подойти к этому с помощью рекурсивной функции

function recurrsiveTraverseArray($arr, $html=null){
    $html = '<ul>';
    foreach($arr as $v){
      if(is_array($v)){
        $html .= recurrsiveTraverseArray($v, $html);
      }else{
        $html .= '<li>'.$v.'</li>';
      }
    }
    $html .= '</ul>';
    return $html;
  }

Использование:

$stuff = array('germany', 'java', 'help', array('hello', 'help', array('save', 'me', 'python')));
echo recurrsiveTraverseArray($stuff);

Рабочая ДЕМО

0 голосов
/ 23 июня 2019

Вы можете использовать рекурсивную функцию как

<?php
        //Enter your code here, enjoy!


$stuff = array('germany', 'java', 'help', array('hello', 'help', array('save', 'me', 'python')));

loop($stuff);

function loop($ary){
    echo "<ul>\n";
    foreach($ary as $val){
        if(is_array($val))
            loop($val);
        else
            echo "<li>".$val."</li>\n";
    }
    echo "</ul>\n";
}

Это даст вывод как:

<ul>
<li>germany</li>
<li>java</li>
<li>help</li>
<ul>
<li>hello</li>
<li>help</li>
<ul>
<li>save</li>
<li>me</li>
<li>python</li>
</ul>
</ul>
</ul>

Рабочая демоверсия здесь Не стесняйтесь задавать любые сомнения.

Happy Coding:)

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