Преобразование массива PHP в список HTML - PullRequest
3 голосов
/ 03 марта 2012

У меня есть массив, который я хотел бы вывести в определенном формате списка HTML.

Мой массив PHP выглядит следующим образом:

Array
(
    [MAIN] => Master Product
    [ID1] => Array
        (
            [0] => Product 1
        )

    [ID2] => Array
        (
            [0] => Product 2
            [ID3] => Array
                (
                    [0] => Product 3
                )

            [ID4] => Array
                (
                    [0] => Product 4
                )
        )
)

Формат списка HTML, который я ищу, выглядит следующим образом.

<ul id="treeview">
    <li>Master Product
        <ul>
            <li>Product 1</li>
            <li>Product 2
                <ul>
                    <li>Product 3</li>
                    <li>Product 4</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

Любая помощь будет оценена.

Ответы [ 2 ]

5 голосов
/ 03 марта 2012

Примерьте размер:


function recurseTree($var){
  $out = '<li>';
  foreach($var as $v){
    if(is_array($v)){
      $out .= '<ul>'.recurseTree($v).'</ul>';
    }else{
      $out .= $v;
    }
  }
  return $out.'</li>';
}

echo '<ul>'.recurseTree($yourDataArrayHere).'</ul>';

4 голосов
/ 03 марта 2012
$data = array(); // your data

function toUL($data=false, $flatten=false){
 $response = '<ul>';
 if(false !== $data) {
   foreach($data as $key=>$val) {
    $response.= '<li>';
    if(!is_array($val)) {
     $response.= $val;
    } else {
     if(!$flatten){
       $response.= toUL($val);
     } else {
       // pulls the sub array into the current list context
       $response.= substr($response,0,strlen($response)-5) . toUL($val);
     }
    }
    $response.= '</li>';
   }
 }
 $response.= '</ul>';
 return $response;
}

// Тест № 1 - именованные значения echo toUL (array ('a' => 'b', 'c' => 'd', 'e' => array ('f' => 'g'))); // Результат № 1

  • б
  • D
    • г

// Тест № 2 - списки значений echo toUL (массив ('a', 'b', 'c', массив ('d', 'e', ​​'f'))); // Результат № 2

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