Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Элемент массива и строка
Сообщения
Fantik

Помогите с таким вот делом. Почему нельзя строковой переменной задать значение одного элемента из многомерного массива

$info = $glue['responseData']['results']['0']['visibleUrl'];

Выдаёт ошибку Cannot use string offset as an array
добавлено спустя 38 секунд:
Что только не пробовал делать ни в какую не хочет работать скрипт ((

07 Июн 2013, 20:23
Default_mo

а у тебя $info массивом случаем не объявлена?
добавлено спустя 5 минут:
а не, у тебя либо $glue не является массивом, либо такого элемента нет вообще.

покаж код короче.

07 Июн 2013, 21:39
Akdmeh

у тебя results не является массивом.
$glue['responseData']['results'] является строкой, как я понял.
Сделай так:
print_r($glue);
и посмотри, какая структура у массива, вдруг ты чего-то напутал

07 Июн 2013, 21:41
Fantik

Данные в формате json http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=info:wap-catalog.ru

Через функцию преобразую в массив

[php:1:303cf014cf]function load_json_utf8($content)
{
$bom = chr(0xEF).chr(0xBB).chr(0xBF);
if(substr_compare($bom, $content, 0, strlen($bom)) == 0)
$content = substr($content, strlen($bom));
return json_decode($content, true);
}[/php:1:303cf014cf]

Далее обрабатываю так

[php:1:303cf014cf]if (!empty($results[0])) {
$glue = load_json_utf8($results[0]);
if (!empty($glue)) {
$info = $glue['responseData']['results'][0]['visibleUrl'];
} else {
$info = '';
}
} else {
$info = '';
}[/php:1:303cf014cf]

$results[0] содержит страницу с данным, что по ссылке выше


А массив вот
array(3) { ["responseData"]=> array(2) { ["results"]=> array(1) { [0]=> array(8) { ["GsearchResultClass"]=> string(10) "GwebSearch" ["unescapedUrl"]=> string(16) "http://o5cat.ru/" ["url"]=> string(16) "http://o5cat.ru/" ["visibleUrl"]=> string(8) "o5cat.ru" ["cacheUrl"]=> string(0) "" ["title"]=> string(90) "Белый каталог сайтов Добавить сайт Прямые ссылки" ["titleNoFormatting"]=> string(90) "Белый каталог сайтов Добавить сайт Прямые ссылки" ["content"]=> string(275) "Белый каталог сайтов с прямыми ссылками - отличное место, где можно бесплатно получить прямую ссылку на свой ресурс и в замен никаких обратных ..." } } ["cursor"]=> array(6) { ["resultCount"]=> string(1) "1" ["pages"]=> array(1) { [0]=> array(2) { ["start"]=> string(1) "0" ["label"]=> int(1) } } ["estimatedResultCount"]=> string(1) "1" ["currentPageIndex"]=> int(0) ["moreResultsUrl"]=> string(91) "http://www.google.com/search?oe=utf8&ie=utf8&source=uds&start=0&hl=en&q=info:wap-catalog.ru" ["searchResultTime"]=> string(4) "0.18" } } ["responseDetails"]=> NULL ["responseStatus"]=> int(200) }
добавлено спустя 1 минуту:
И ещё если я этот код просто оформляю в файлик и запускаю то всё работает и выводится, а если интегрирую в скрипт, то выдаёт ошибку
добавлено спустя 1 минуту:
Вот оно тут всё работает http://o5cat.ru/0.php
добавлено спустя 1 минуту:
Тут получается ['visibleUrl'] строка?

07 Июн 2013, 22:23
ma3uk

Все должно работать, сравнил со своей функцией, массив идентичен, с разницей только, что используются двойные кавычки.
добавлено спустя 1 минуту:
load_json_utf8 - бредовая функция, googleapi и так выдает результаты в UTF-8, и без нее все будет отлично работать.

07 Июн 2013, 22:57
Fantik

ma3uk, работает и без неё понятно

07 Июн 2013, 23:06
ma3uk

Fantik, прости, что? Без запятых не понятно, что ты хотел сказать.

07 Июн 2013, 23:08
Fantik

Удалил полностью функцию load_json_utf8, вышеуказанная проблема исчезла, но появилась новая  Но это уже другая история
добавлено спустя 39 секунд:
ma3uk, работает и без load_json_utf8

07 Июн 2013, 23:21
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.