Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Многомерный массив
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Многомерный массив

Страниц (1): [1]
 

1. BlackHacker - 04 Сентября, 2012 - 18:39:53 - перейти к сообщению
Всем привет. Столкнулся с такой ошибкой:
Цитата:
Notice: Undefined index: u

Индекс u в массиве присутствует, выводится через echo, и даже все работает. Я бы может и не заморачивался из-за этого, но результат работы скрипта выводится в ajax, и некрасиво, что там вываливаются ошибки. Массив проходит через несколько функций, может, причина в этом. Если кто-нибудь знает, отпишитесь.
2. Мелкий - 04 Сентября, 2012 - 18:48:42 - перейти к сообщению
Дальше по тексту ошибки написано даже, в какой строке проблема. Раз массив многомерный - самая простая ошибка - искать не на том уровне, где тот должен быть.
3. Vinyl - 04 Сентября, 2012 - 18:49:23 - перейти к сообщению
Элементу массива с ключом u как присвоено значение?
Если пишете
PHP:
скопировать код в буфер обмена
  1. $arr['u'] .= "Что-то там...";

т.е., пристыковываете значение ( ".=" вместо "=" ), из-за этого такое предупреждение бывает
4. BlackHacker - 04 Сентября, 2012 - 18:59:06 - перейти к сообщению
Мелкий пишет:
Дальше по тексту ошибки написано даже, в какой строке проблема. Раз массив многомерный - самая простая ошибка - искать не на том уровне, где тот должен быть.

Так я знаю, где проблема, оттуда и взял индекс. Если бы что-то было не верно, код бы не работал. Но все работает, просто по какой-то причине ошибку пишет.

Vinyl, массив заполняется следующим образом:

PHP:
скопировать код в буфер обмена
  1. function buildrequest(параметры){
  2. $result = curl_exec($ch); // запрос curl
  3. $result=substr($result, 0, -33); //обрезаю лишние символы ответа
  4. $result= str_replace("'", "", $result); //убираю кавычки
  5. $result = load_json_utf8($result);//кодировка в utf-8, и возврат json-массива
  6. return $result;
  7. }
  8.  
  9. function load_json_utf8($content_str)
  10. {
  11.         $content_str=substr(
  12.                 $content_str,      
  13.                 min(
  14.                         strpos($content_str.'[','['),
  15.                         strpos($content_str.'{','{')
  16.                 )
  17.         );
  18.         return json_decode($content_str, true);  
  19. }
  20.  
  21. $result=buildrequest(параметры);//заполняю массив
  22. echo $result['u']['i'];//выводит нужные данные, которые там ЕСТЬ. Но так же почему-то пишет ошибку
  23.  
5. Vinyl - 04 Сентября, 2012 - 19:01:14 - перейти к сообщению
Я бы не заморачивался:
Подмигивание
6. BlackHacker - 04 Сентября, 2012 - 19:03:59 - перейти к сообщению
Vinyl пишет:
Я бы не заморачивался:
Подмигивание

придется обойтись этим решением) но теперь мне это не даст покоя, что где-то там ошибка) потому что мне не понятна ее причина
7. armancho7777777 - 04 Сентября, 2012 - 19:10:38 - перейти к сообщению
Проверьте:
PHP:
скопировать код в буфер обмена
  1. echo (isset($result['u']['i'])) ? $result['u']['i'] : '';
8. BlackHacker - 04 Сентября, 2012 - 19:17:11 - перейти к сообщению
armancho7777777 пишет:
Проверьте:
PHP:
скопировать код в буфер обмена
  1. echo (isset($result['u']['i'])) ? $result['u']['i'] : '';

теперь без ошибки выводит) спасибо
9. armancho7777777 - 04 Сентября, 2012 - 19:20:07 - перейти к сообщению
Не за что.
10. DlTA - 04 Сентября, 2012 - 20:02:01 - перейти к сообщению
а откуда такая уверенность что они там есть?
хотя б var_dump-ом гляньте что там есть.
11. BlackHacker - 06 Сентября, 2012 - 07:21:03 - перейти к сообщению
всем спасибо, проблему решил. причина была в том, что в ряде случаев переменной не было. добавил проверку на наличие переменной, теперь все работает

 

Powered by ExBB FM 1.0 RC1