Json и foreach ограничение до 4 результатов в цикле

#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) выдаст вам предупреждение (использование неопределенной константы) в данный момент («Другое» не заключено в кавычки). В будущем это будет ошибкой.