при декодировании и получении json значения я получаю ошибку? - PullRequest
0 голосов
/ 02 марта 2020

В столбце productoptions в таблице базы данных я вставляю значение, как показано ниже

[{"value":["Color","size",""]},{"Color":["Red","Blue","white"],"size":["L","XL"]},{"type":["Dropdown","Checkbox",""]}]

После этого я получаю значения параметра

$opt =$value->ProductOptions;

Затем я декодирую значение json используя следующее

$jsonvalue = json_decode($opt);

, тогда я получил значение, как показано ниже.

Array ( [0] => stdClass Object ( [value] => Array ( [0] => Color [1] => size [2] => ) ) [1] => stdClass Object ( [Color] => Array ( [0] => Red [1] => Blue [2] => white ) [size] => Array ( [0] => L [1] => XL ) ) [2] => stdClass Object ( [type] => Array ( [0] => Dropdown [1] => Checkbox [2] => ) ) )

После декодирования я пытаюсь получить определенный объект (цвет, размер и т. д. c)

foreach ($jsonvalue as $key => $values) {
  print_r($vales->Color);
}

Но я ошибаюсь, как показано ниже:

Сообщение: неопределенное свойство: stdClass :: $ Color

Я получаю значение

value => color,size 

После этого при необходимости динамически передайте указанное выше значение и получите

color => red,blue,white 

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

Структура JSON немного странная, вы смешали данные и структуры.

Но если вы используете print_r($jsonvalue);, вы можете увидеть, как расположены массивы и объекты, это показывает, что * Элемент 1004 * имеет элемент value, а элемент [1] содержит данные, указанные в значениях, поэтому ...

Один из элементов в вашем элементе value - "", это может вызвать проблемы, поэтому вы можете добавить проверку, чтобы игнорировать пустые элементы.

foreach ( $jsonvalue[0]->value as $types ) {
    if ( !empty($types) )   {
        echo $types.PHP_EOL;
        print_r($jsonvalue[1]->{$types});
    }    
}

дает вам ...

Color
Array
(
    [0] => Red
    [1] => Blue
    [2] => white
)
size
Array
(
    [0] => L
    [1] => XL
)
0 голосов
/ 02 марта 2020

Попробуйте:

foreach ($jsonvalue as $key => $values) {
  print_r($vales->{$key});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...