2016-09-05 4 views
2

мне нужно для извлечения данных из многомерного массиварендеринга HTML таблицу из многомерного массива

 array(2) { 
      ["label"]=> 
      string(6) "label1" 
      ["children"]=> 
      array(3) { 
      [1]=> 
      array(1) { 
       ["label"]=> 
       string(6) "label2" 
      } 
      [2]=> 
      array(1) { 
       ["label"]=> 
       string(6) "label3" 
      } 
      [3]=> 
      array(2) { 
      ["label"]=> 
      string(6) "label4" 
      ["children"]=> 
      array(2) { 
       [1]=> 
       array(1) { 
       ["label"]=> 
       string(6) "label5" 
       } 
       [2]=> 
       array(1) { 
       ["label"]=> 
       string(6) "label6" 
       } 
      } 
      } 
     } 
     } 

в таблицу со следующей структурой:

\t <table border="1"> 
 
    \t \t \t <tr> 
 
    \t \t \t \t <td colspan="4">label1</td> 
 
    \t \t \t </tr> 
 
    \t \t \t <tr> 
 
    \t \t \t \t <td colspan="1">label2</td> 
 
    \t \t \t \t <td colspan="1">label3</td> 
 
    \t \t \t \t <td colspan="2">label4</td> 
 
    \t \t \t </tr> 
 
    \t \t \t <tr> 
 
    \t \t \t \t <td></td> 
 
    \t \t \t \t <td></td> 
 
    \t \t \t \t <td colspan="1">label5</td> 
 
    \t \t \t \t <td colspan="1">label6</td> 
 
    \t \t \t </tr> 
 
    \t \t </table>

глубины и структуры массива являются динамическими, но основное правило остается неизменным.

Любые идеи о том, как я могу это сделать? Спасибо!

ответ

0

Преобразование многомерного массива в один, а затем петлю через единый, создавая HTML строку, которую нужно, а именно:

Преобразовать массив: см Convert multidimensional array into single array

Loop через единый массив в PHP скрипт и повторить строку вашего браузера:

<?php 
    function createHtml($singleArray){ 
    $html = '<table border="1">'; 
    foreach($singleArray as $label){ 
     $colspan = 1; 
     //If then statement that sets $colspan based on label 

     $html .= '<tr>'; 
     $html .= '<td colspan="'.$colspan.'">'.$label.'</td>'; 
     $html .= '</tr>'; 
    } 
    $html .= '</table>'; 
    echo $html; 
    } 

?> 
+0

к сожалению, ваше решение выводит только одну метку для каждой строки (<таблица граница = «1»><тд = Объединение столбцов «1»> label1 Array). Мне нужно иметь произвольное количество меток ( s) для каждой строки, каждая из которых имеет «colspan», равную количеству дочерних элементов в массиве. – md0

Смежные вопросы