Задать вопрос
@chernousovkgb

Как в цикле foreach между интерации вставить html тег?

Столкнулся с проблемой.
Собственно обучаюсь на онлайн курсах и поступило задание создать массив в json формате и вывести его в таблицу.
Предлагают ручками все выводить, но я хочу сделать в цикле.
Далее в комментах напишу
<html>
    
<head>
    <title>ДЗ извлекаем из json</title>
    <style> 
th, td {
border: 2px solid #F50;
padding: 19px; 

}
</style>
</head>
<body>


    
  <table>

<?php
$file='jss.json';
	
$json = file_get_contents("$file");

$people = json_decode($json, true);
?>  


    
    <tr>
    <th>Имя</th>
    <th>Фамилия</th>
    <th>Адрес</th>
    <th>Телефон</th>
    </tr>
    
<tr>
  
   <?php foreach ($people as $a=>$b){
	
		foreach($b as $c=>$d){
			echo "<td>$d</td>" . "";
			 
			}
		
		
   }
	 ?>

</tr>//нужно чтобы каждый пройденный цикл обрамлялся в <tr>, но у меня каждое значение обрамляется в <td> и тогда все в одну строку, а надо чтобы значения былт в <td>, а интерация в <tr> тут первый цикл</tr><tr>тут второй</tr>


</table>
</body>

</html>


Сам json
[
{ "Имя": "Вася", "Фамилия": "Иванов", "Адрес": "г. Москва ул. Тверская", "Телефон": "01"},
{ "Имя": "Петя", "Фамилия": "Петров", "Адрес": "г. Перьм ул. Ленина", "Телефон": "02"},
{"Имя": "Александр", "Фамилия": "Сидоров", "Адрес": "г. Берлин ул. ...", "Телефон": "05"}
]
  • Вопрос задан
  • 2153 просмотра
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
DevMan
@DevMan
<?php foreach ($people as $a=>$b){
  echo '<tr>';
    foreach($b as $c=>$d){
      echo "<td>$d</td>" . "";
      }
    echo '</tr>';
   }
   ?>


a вообще - это говнище, которое просто рыдает по шаблонизатору.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега PHP
♬♬
Если в JSON нарушится порядок полей, лучше не опираться на порядок в примере. Вдруг будет сначала "Адрес", а потом "Фамилия".
$baseRow = ['Имя' => '', 'Фамилия' => '', 'Адрес' => '', 'Телефон' => ''];

$template = <<<EOFTMPL
<tr>
	<td>%s</td>
	<td>%s</td>
	<td>%s</td>
	<td>%s</td>
</tr>
EOFTMPL;

foreach($people as $row) {
	$row = array_merge($baseRow, $row);
	printf($template, $row['Имя'], $row['Фамилия'], $row['Адрес'], $row['Телефон']);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы