#php #json #filter #foreach #categories
#php #json #Фильтр #foreach #Категории
Вопрос:
У меня есть api с json, и я хочу создать таблицу с 4 столбцами в одной строке и фильтровать по категориям. Мой код:
echo '<table>';
foreach($jsonData['pricing'] as $keyDec => $valArr) {
foreach($valArr as $keyOuter => $valOuter){
if($keyOuter == "categories"){
$i=0;
foreach($valOuter as $keyInner => $valInner){
if ($valInner == Other) {
echo '<tr>';
if ($i < 4) {
{
echo"<td>$keyDec</td>";
$i =1;
}
}
echo '</tr>';
}
}
}
}
}
echo"</table>";
Если я использую только один foreach, результаты — это именно то, что я хочу, попробовал со следующим кодом:
$i=0;
echo"<table>";
foreach($jsonData['pricing'] as $keyDec => $valArr) {
if($i %4 == 0)
{
echo"<tr> <td> $keyDec</td>";
}
else
{
echo"<td> $keyDec </td>";
}
$i ;
}
echo"</tr>";
echo"</table>";
И результаты не такие, как я хочу, я новичок в php, пожалуйста, помогите мне с некоторым оптимизированным php-кодом, чтобы сделать это.
Спасибо!
Я нашел решение:
$i=0;
echo '<div class="m-2"><strong>Populare</strong></div>
<table border="0" cellspacing="1" cellpadding="0">';
foreach($jsonData['pricing'] as $keyDec => $valArr) {
if($valArr[categories][0] == 'Popular') {
if ($i %4 == 0) {
echo '<tr><td>.'.$keyDec.''.$valArr[register][1].' '.$jsonData['currency']['suffix'].'</td>';
}
else if ($valArr[categories][0] == 'Popular')
{
echo '<td>.'.$keyDec.''.$valArr[register][1].' '.$jsonData['currency']['suffix'].'</td>';
}
$i ;
}
}
echo '</tr>';
echo '</table>';
Комментарии:
1. Вы закрываете только последнюю строку таблицы, потому что вы разместили
</tr>
ее вне своего цикла. Вам нужно использовать условие для закрытия строки, аналогичное тому, что вы сделали для открытия строки.2. Кроме того, это:
if ($valInner == Other)
выдаст вам предупреждение (использование неопределенной константы) в данный момент («Другое» не заключено в кавычки). В будущем это будет ошибкой.