Распарсить JSON PHP. Не работает!

116
08 ноября 2019, 11:10

никак не могу понять где ошибка, вроде код верный, но некоторые элементы json просто не считываются.

Есть данные пытаюсь их структурировать в один массив взяв только нужные элементы.

$obj = json_decode($data,true);
$mas=array();
for ($i = 0; $i <count($obj['included']); $i++) {   
 if ($obj['included'][$i]['type']='vacancyDetailInfo'){
    $id=$obj['included'][$i]['id'];
    $mas[$id]['duties']= $obj['included'][$i]['attributes']['duties'];
    $mas[$id]['requirements']= $obj['included'][$i]['attributes']['requirements'];
    $mas[$id]['conditions']= $obj['included'][$i]['attributes']['conditions'];
 }
 if ($obj['included'][$i]['type']='vacancyMainInfo'){
     $id=$obj['included'][$i]['id'];
     $mas[$id]['profession']= $obj['included'][$i]['attributes']['profession'];
     $mas[$id]['minSalary']= $obj['included'][$i]['attributes']['minSalary'];
     $mas[$id]['maxSalary']= $obj['included'][$i]['attributes']['maxSalary'];
 }
}
print_r ($mas);

в итоге получаю массив такого вида

Array
(
    [31259521] => Array
        (
            [duties] => 
            [requirements] => 
            [conditions] => 
            [profession] => Менеджер по развитию продаж на строительные объекты
            [minSalary] => 0
            [maxSalary] => 0
        )
    [31780640] => Array
        (
            [duties] => 
            [requirements] => 
            [conditions] => 
            [profession] => Энергетик, специалист по охране труда и промышленной безопасности
            [minSalary] => 40000
            [maxSalary] => 0
        )

почему к duties, requirements, conditions не считывается, точнее в массив не добавляется? а если обратится так

echo $obj['included'][0]['attributes']['duties'];

то его содержимое нормально отображается?

Answer 1

Замените присваивание сравнением в условиях, и будет Вам счастье.

if ($obj['included'][$i]['type']=='vacancyDetailInfo'){
    $id=$obj['included'][$i]['id'];
    $mas[$id]['duties']= $obj['included'][$i]['attributes']['duties'];
    $mas[$id]['requirements']= $obj['included'][$i]['attributes']['requirements'];
    $mas[$id]['conditions']= $obj['included'][$i]['attributes']['conditions'];
}
if ($obj['included'][$i]['type']=='vacancyMainInfo'){
    $id=$obj['included'][$i]['id'];
    $mas[$id]['profession']= $obj['included'][$i]['attributes']['profession'];
    $mas[$id]['minSalary']= $obj['included'][$i]['attributes']['minSalary'];
    $mas[$id]['maxSalary']= $obj['included'][$i]['attributes']['maxSalary'];
}
READ ALSO
Не могу получить данные о пользователе из база данных

Не могу получить данные о пользователе из база данных

В ответ на get запрос я хочу отдать пользователя с айдишником 1:

148
Сервер не возвращает данные

Сервер не возвращает данные

Всем привет! Надеюсь на Вашу помощьЕсть страничка, на которой есть select

134
Подставить адрес в массиве PHP

Подставить адрес в массиве PHP

Можно ли в PHP подставить адрес массиву?

146
CodeIgniter route localhost 404

CodeIgniter route localhost 404

Следуя по примерам из учебника в документации я переписал routesphp соответствующим образом:

138