JSON многомерный массив экранизация цикла

234
25 июля 2017, 19:42

Как вывести в цикле содержимое такого вида?

    $array = '{
        "Доступный цвет": [{
            "Красный": "red",
            "Белый": "white",
            "Синий": "blue",
            "Серый": "gray",
            "Черный": "black"
        }],
        "Доступный размер": [{
            "46 (S)": "46-s",
            "48 (M)": "48-m",
            "50 (L)": "50-l",
            "52 (XL)": "52-xl"
        }]
    }';

Пытаюсь вот так, не получается. Выводится ошибка, как исправить?

<?php
$array = json_decode($array);
foreach($array as $row => $key) {
echo $row;
foreach($key as $k => $t) {
echo $t;
}
}
?>
Answer 1

код под текущий json.

$array = json_decode($array, true);
foreach ($array['Доступный цвет'] as $list) {
    foreach ($list as $key => $value) {
        echo $key . " - ". $value.'<br/>';
    }
}
foreach ($array['Доступный размер'] as $list) {
    foreach ($list as $key => $value) {
        echo $key . " - ". $value.'<br/>';
    }
}

однако структура JSON "грязная", так не следует писать. Ключи не должны быть на русском языке. Пример "как надо":

{
  "colors": [
    {"key": "red", "label": "Красный"},
    {"key": "white", "label": "Белый"},
    {"key": "blue", "label": "Синий"},
    {"key": "gray", "label": "Серый"},
    {"key": "black", "label": "Черный"}
  ],
  "sizes": [
    {"key": "46-s", "label": "46 (S)"},
    {"key": "48-m", "label": "48 (M)"},
    {"key": "50-l", "label": "50 (L)"},
    {"key": "52-xl", "label": "52 (XL)"},
  ]
}
READ ALSO
Имитация действий пользователя

Имитация действий пользователя

Всем приветМожно ли через php взаимодействовать с DOM сайта? Т

268
После добавления поля в таблицу с помощью миграции в тестах(codecept unit) выпадает ошибка Setting unknown property

После добавления поля в таблицу с помощью миграции в тестах(codecept unit) выпадает ошибка Setting unknown property

Yii2После добавления поля в таблицу с помощью миграции в тестах(codecept unit) выпадает ошибка Setting unknown property: mommon\entities\User::email_confirm_token на класс, наследующий...

181
Получить часть строки php (preg_match)

Получить часть строки php (preg_match)

Есть html-разметка, которая идет в виде строки в php, в ней есть следующая строка:

218
Составление рег. выражения php

Составление рег. выражения php

Есть HTML разметка:

196