Json_decode() ожидает, что параметр 1 будет строкой, заданный массив

Что вызывает эту ошибку в моем коде?

$query = $this->db->query("SELECT * FROM tour_foreign ORDER BY id desc");
        $data = array();
        foreach ($query->result() as $row)
            $data[] = array('guide' => $row->guide);

            echo json_decode($data); //Line 167

ошибка:

erro: json_decode() expects parameter 1 to be string, array given: Line Number: 167

ОБНОВИТЬ:

Если я использую json_encode вместо json_decode, мой вывод будет таким:

[{"guide":["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":["\u0633\u06c‌​c\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":null}]

Это персидские слова.

Ответ 2

Установите для декодирования значение true

Ваше декодирование не установлено в true. Если у вас нет доступа к источнику, установите значение true. Код ниже исправит это для вас.

$WorkingArray = json_decode(json_encode($data),true);

Ответ 3

json_decode() используется для декодирования строки json для объекта array/data. json_encode() создает строку json из массива или данных. Вы используете неправильную функцию, мой друг, попробуйте json_encode();

Ответ 4

Вам нужно установить в true. Если у вас нет доступа к источнику, закодируйте и декодируйте его.

$answer  = json_decode(json_encode( $_GET['json'] ), true );

Ответ 5

вот решение для аналогичной проблемы, с которой я столкнулся при извлечении имени из профиля пользователя facebook json object

$uname=json_encode($userprof);
$uname=json_decode($uname);
echo "Welcome " . $uname -> name  ;