@vitya19

Не удается положить данные в массив?

Есть скрипт, он получает данные json, пробегается по ним в цикле и заполняет массив, если он встречает определенный тип, он должен создать массив в массиве, и положить данные туда, но это не работает
$fp = file_get_contents( 'dump/conf.json' );

 $result = json_decode( $fp );

 $edges = $result->data->user->edge_owner_to_timeline_media->edges;

 $i = 0;

 $img = array();

 foreach ( $edges as $edg )
 {
    $d = 0;
    $img[$i] = $edg->node->display_url;
    if ( $edg->node->__typename == "GraphSidecar" )
    {
      $children = array();
      foreach ( $edg->node->edge_sidecar_to_children->edges as $ed )
      {
        $img[$i]['children'][$d] = $ed->node->display_url;
        $d++;
      }
    }
    $i++;
 }
 echo "<pre>";
 var_dump( $img );
 echo "</pre>";

Ошибка возникает на строке $img[$i]['children'][$d] = $ed->node->display_url;
Текст ошибки: Illegal string offset 'children', Uncaught Error: Cannot use string offset as an array in
Если просто сделать так, то все работает
$img[0]['children'][1] = "Test";
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
проблема тут. в $img[0] вы помещаете строку
$img[$i] = $edg->node->display_url;

а потом пытаетесь использование значение $img[0] как массив
$img[$i]['children'][$d]

решение - сделать так
$img[$i]['display_url'] = $edg->node->display_url;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы