Как создать таблицу HTML из массива PHP?

Как создать таблицу HTML из массива PHP? Таблица с заголовком как «заголовок» , «цена» и «номер» .

$shop = array( array("rose", 1.25, 15), array("daisy", 0.75, 25), array("orchid", 1.15, 7 ), ); 

Было бы лучше просто получить данные в массив следующим образом:

 <?php $shop = array( array("title"=>"rose", "price"=>1.25 , "number"=>15), array("title"=>"daisy", "price"=>0.75 , "number"=>25), array("title"=>"orchid", "price"=>1.15 , "number"=>7) ); ?> 

И затем сделайте что-то подобное, что должно хорошо работать, даже если вы добавите больше столбцов в свою таблицу в базе данных позже.

 <?php if (count($shop) > 0): ?> <table> <thead> <tr> <th><?php echo implode('</th><th>', array_keys(current($shop))); ?></th> </tr> </thead> <tbody> <?php foreach ($shop as $row): array_map('htmlentities', $row); ?> <tr> <td><?php echo implode('</td><td>', $row); ?></td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> 

Вот мой:

 <?php function build_table($array){ // start table $html = '<table>'; // header row $html .= '<tr>'; foreach($array[0] as $key=>$value){ $html .= '<th>' . htmlspecialchars($key) . '</th>'; } $html .= '</tr>'; // data rows foreach( $array as $key=>$value){ $html .= '<tr>'; foreach($value as $key2=>$value2){ $html .= '<td>' . htmlspecialchars($value2) . '</td>'; } $html .= '</tr>'; } // finish table and return it $html .= '</table>'; return $html; } $array = array( array('first'=>'tom', 'last'=>'smith', 'email'=>'tom@example.org', 'company'=>'example ltd'), array('first'=>'hugh', 'last'=>'blogs', 'email'=>'hugh@example.org', 'company'=>'example ltd'), array('first'=>'steph', 'last'=>'brown', 'email'=>'steph@example.org', 'company'=>'example ltd') ); echo build_table($array); ?> 
  <table> <tr> <td>title</td> <td>price</td> <td>number</td> </tr> <? foreach ($shop as $row) : ?> <tr> <td><? echo $row[0]; ?></td> <td><? echo $row[1]; ?></td> <td><? echo $row[2]; ?></td> </tr> <? endforeach; ?> </table> 
 echo "<table><tr><th>Title</th><th>Price</th><th>Number</th></tr>"; foreach($shop as $v){ echo "<tr>"; foreach($v as $vv){ echo "<td>{$vv}</td>"; } echo "<tr>"; } echo "</table>"; 

Создайте две петли foreach и выполните итерацию через массив. Распечатайте значение и добавьте в него теги HTML-таблицы.

 echo '<table><tr><th>Title</th><th>Price</th><th>Number</th></tr>'; foreach($shop as $id => $item) { echo '<tr><td>'.$item[0].'</td><td>'.$item[1].'</td><td>'.$item[2].'</td></tr>'; } echo '</table>'; 

Вы также можете использовать массив array_reduce

пример:

 $tbody = array_reduce($rows, function($a, $b){return $a.="<tr><td>".implode("</td><td>",$b)."</td></tr>";}); $thead = "<tr><th>" . implode("</th><th>", array_keys($rows[0])) . "</th></tr>"; echo "<table>\n$thead\n$tbody\n</table>"; 
  <table> <thead> <tr><th>title</th><th>price><th>number</th></tr> </thead> <tbody> <?php foreach ($shop as $row) { echo '<tr>'; foreach ($row as $item) { echo "<td>{$item}</td>"; } echo '</tr>'; } ?> </tbody> </table> 

Вы можете использовать эту функцию. Чтобы добавить заголовок таблицы, вы можете настроить второй параметр $myTableArrayHeader и сделать то же самое с информацией заголовка перед телом:

 function insertTable($myTableArrayBody) { $x = 0; $y = 0; $seTableStr = '<table><tbody>'; while (isset($myTableArrayBody[$y][$x])) { $seTableStr .= '<tr>'; while (isset($myTableArrayBody[$y][$x])) { $seTableStr .= '<td>' . $myTableArrayBody[$y][$x] . '</td>'; $x++; } $seTableStr .= '</tr>'; $x = 0; $y++; } $seTableStr .= '</tbody></table>'; return $seTableStr; } 

PHP-код:

 $multiarray = array ( array("name"=>"Argishti", "surname"=>"Yeghiazaryan"), array("name"=>"Armen", "surname"=>"Mkhitaryan"), array("name"=>"Arshak", "surname"=>"Aghabekyan"), ); $count = 0; foreach ($multiarray as $arrays){ $count++; echo "<table>" ; echo "<span>table $count</span>"; echo "<tr>"; foreach ($arrays as $names => $surnames){ echo "<th>$names</th>"; echo "<td>$surnames</td>"; } echo "</tr>"; echo "</table>"; } 

CSS:

 table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; } td, th { border: 1px solid #dddddd; text-align: left; padding: 8px;`` } 

Вы можете использовать foreach для итерации массива $shop и получения одного из массивов с каждой итерацией, чтобы отразить его значения следующим образом:

 echo '<table>'; echo '<tr><th>title</td><td>price</td><td>number</td></tr>'; foreach ($shop as $item) { echo '<tr>'; echo '<td>'.$item[0].'</td>'; echo '<td>'.$item[1].'</td>'; echo '<td>'.$item[2].'</td>'; ehoc '</tr>'; } echo '</table>'; 
 <?php echo "<table> <tr> <th>title</th> <th>price</th> <th>number</th> </tr>"; for ($i=0; $i<count($shop, 0); $i++) { echo '<tr>'; for ($j=0; $j<3; $j++) { echo '<td>'.$shop[$i][$j].'</td>'; } echo '</tr>'; } echo '</table>'; 

Вы можете его оптимизировать, но это нужно делать.

Вот мой ответ.

 function array2Html($array, $table = true) { $out = ''; foreach ($array as $key => $value) { if (is_array($value)) { if (!isset($tableHeader)) { $tableHeader = '<th>' . implode('</th><th>', array_keys($value)) . '</th>'; } array_keys($value); $out .= '<tr>'; $out .= array2Html($value, false); $out .= '</tr>'; } else { $out .= "<td>$value</td>"; } } if ($table) { return '<table>' . $tableHeader . $out . '</table>'; } else { return $out; } } 

Однако ваши заголовки таблиц должны быть частью массива, что довольно часто встречается в базе данных. например

 $shop = array( array( 'title' => 'rose', 'price' => 1.25, 'number' => 15, ), array( 'title' => 'daisy', 'price' => 0.75, 'number' => 25, ), array( 'title' => 'orchid', 'price' => 1.15, 'number' => 7, ), ); print arrayToHtml($shop); 

Надеюсь, поможет 😉

Массив в таблицу. Массив в div. JSON в таблицу. JSON в div.

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

Как это использовать?

Просто получить и объект

 $obj = new Arrayinto(); 

Создайте массив, который хотите преобразовать

 $obj->array_object = array("AAA" => "1111", "BBB" => "2222", "CCC" => array("CCC-1" => "123", "CCC-2" => array("CCC-2222-A" => "CA2", "CCC-2222=B" => "CB2" ) ) ); 

Если вы хотите преобразовать массив в таблицу. Назовите это.

 $result = $obj->process_table(); 

Если вы хотите преобразовать массив в div. Назовите это.

 $result = $obj->process_div(); 

Предположим, если у вас есть JSON

 $obj->json_string = '{ "AAA":"11111", "BBB":"22222", "CCC":[ { "CCC-1":"123" }, { "CCC-2":"456" } ] } '; 

Вы можете преобразовать в таблицу / div как это

 $result = $obj->process_json('div'); 

ИЛИ

 $result = $obj->process_json('table'); 

Надеюсь, это поможет тебе.

 <table id="usuarios"> <tbody> <tr> <th>Nombre</th> <th>Apellido</th> <th>Email</th> <th>Institución educativa</th> <th>Fecha Registro</th> </tr> <?php if ($result->num_rows > 0) {// output data of each row while($row = $result->fetch_assoc()) { echo "<tr><td>".$row["Nombre"]."</td>"; echo "<td>".$row["Apellido"]."</td>"; echo "<td>".$row["Email"]."</td>"; echo "<td>".$row["NombreInsEdu"]."</td>"; echo "<td>".$row["FechaRegistro"]."</td></tr>"; } } else { echo "0 results"; } $conn->close(); ?> </tbody> </table> - <table id="usuarios"> <tbody> <tr> <th>Nombre</th> <th>Apellido</th> <th>Email</th> <th>Institución educativa</th> <th>Fecha Registro</th> </tr> <?php if ($result->num_rows > 0) {// output data of each row while($row = $result->fetch_assoc()) { echo "<tr><td>".$row["Nombre"]."</td>"; echo "<td>".$row["Apellido"]."</td>"; echo "<td>".$row["Email"]."</td>"; echo "<td>".$row["NombreInsEdu"]."</td>"; echo "<td>".$row["FechaRegistro"]."</td></tr>"; } } else { echo "0 results"; } $conn->close(); ?> </tbody> </table>