ОШИБКА преобразования массива в строку в PHP JSON-декодированном массиве

0

Я новичок в PHP, работающем над скриптом, чтобы получить данные JSON с URL-адреса. Я получил данные из URL-адреса и расшифровал этот JSON.

Но проблема в том, что декодированный массив JSON не преобразовывается в String. Ошибка возникает, когда я пытаюсь запустить цикл foreach здесь, это вывод массива:

Имя массива: $data

ВЫВОД:

array(2) {
    [0]=> string(5) "world"
    [1]=> array(12) {
        [0]=> string(15) "worldstarhiphop"
        [1]=> >string(17) "world series 2014"
        [2]=> string(18) "world of solitaire"
        [3]=> string(9) "world map"
        [4]=> string(19) "world tallest cow"
        [5]=> string(10) "world news"
        [6]=> string(12) "world series"
        [7]=> string(9) "worldstar"
        [8]=> string(12) "world market"
        [9]=> string(29) "worldstarhiphop official site"
        [10]=> string(19) "world tallest dog"
        [11]=> string(17) "world of warcraft"
    }
}

Я пробовал:

if(is_array($data)) {
  foreach ($data as $key=>$value) {
    echo $value;
  }
}

Предоставление этой ошибки:

Notice: Array to string conversion in
  • 1
    $data - это массив, содержащий как строки, так и массивы. Итак, в одной итерации цикла $value является массивом.
  • 0
    так что я могу сделать, чтобы вывести этот массив каждое значение?
Показать ещё 5 комментариев
Теги:
type-conversion
error-handling

2 ответа

1
Лучший ответ

Если ваш массив всегда структурирован так, как 0 как слово и 1 содержащий массив связанных слов, тогда:

echo $data[0];

foreach ($data[1] as $value) {
  echo $value;
}
  • 0
    спасибо большое, приятель :)
2

Это должно помочь вам начать работу. Var_dump в основном предназначен для отладки, показывая вам содержимое переменной.

foreach($data as $foo) {
  if(is_array($foo) {
     foreach($foo as $bar) {      
       var_dump($bar);
     }
  } else {
    var_dump($foo);
  }
}

Подумайте, что это также можно решить рекурсивным образом.

function printNestedArray($foo) 
{
  if(is_array($foo) === false) {
    var_dump($foo);
  } else {
    foreach($foo as $bar) {
      printNestedArray($bar);
    }
  }
}
  • 0
    я попробовал это сначала, он сделал это слишком загруженным, и он показывает «String (No of string in here)», также он возвращает как одну строку, и он не может быть напечатан отдельно?
  • 1
    Измените var_dump на echo и посмотрите, что произойдет.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню