Как я могу получить каждое значение массива в PHP?

#php #arrays #json

Вопрос:

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

Это конечная точка выводит JSON, который выглядит следующим образом:

 idProduct   
  0 => "21"
colour  
  0 => "Red"
  1 => "Green"
size    
  0 => "M"
  1 => "XS"
 

Итак, мне нужно составить таблицу , которая показывает colour[0] с size[0] , colour[1] с size[1] и т. Д.

Основная проблема заключается в том, что я не могу получить доступ по имени столбца (размер и цвет), потому что в другом случае имя может быть способностью, мощью, темнотой и т. Д.

Я пробовал это, но не работает.

 echo '<tbody>';
foreach ($array_from_json as $key => $value) {
  for ($i=0; $i <= count($value) ; $i  ) { 
    echo "<tr><td>".$value[$i]."</td></tr>";
  }
}
echo '</tbody>';
 

Массив ($array_from_json) показывает это в файле var_dump:

array(3) { ["idProducto"]=> array(1) { [0]=> string(1) "9" } ["color"]=> array(2) { [0]=> string(4) "Azul" [1]=> string(5) "Verde" } ["talla"]=> array(2) { [0]=> string(1) "L" [1]=> string(2) "XL" } }

JSON raw-это: {"idProducto":["9"],"color":["Azul","Verde"],"talla":["L","XL"]}

Комментарии:

1. Почему вы используете for into foreach ??? вместо этого печатайте напрямую value «нет»?

2. $value$ это тоже массив… Поэтому мне нужно еще раз повторить это

3. вместо этого вы можете использовать foreach его снова.

4. Вам нужно будет более конкретно указать фактический формат той структуры данных, которую вы получаете. Верно ли, что все столбцы, кроме первого, всегда имеют одинаковое количество записей. И верно ли в целом, что все ключи этих записей являются индикатором связи между всеми этими записями?

5. Пожалуйста, также добавьте исходное значение json, которое вы получите обратно.

Ответ №1:

Вы можете сделать что-то вроде этого:

Вы можете получить имена столбцов с помощью array_keys функции, вам нужно удалить первое имя столбца «idProducto» (потому что вы не хотите повторять его). Этот код будет работать независимо от выбранных вами имен столбцов.

Входные данные (json):

 $json = '{"idProducto":["9"],"color":["Azul","Verde"],"talla":["L","XL"]}';
 

Php-код:

 $product = json_decode($json, true); //Convert a Json string to array

$keys = array_keys($product); //Get arrays keys

array_shift($keys); //Delete first key "idProducto"

echo '<table>';

for($i = 0; $i < count($product[$keys[0]]); $i  ) {
    
    echo '<tr>';
    
    foreach($keys as $key) {        
        echo '<td>' . $product[$key][$i] . '</td>';
    }
    
    echo '</tr>';
}
echo '</table>';
 

Вывод (без заголовка таблицы, но вы можете добавить с помощью foreach в начале):

Цвет talla
Azul L
Verde ХL