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. NeoN121 - 18 Января, 2012 - 18:02:39 - перейти к сообщению
На одном из хостингов заметил странное (для меня) поведение скрипта при реализации примерно вот такого кода:

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($codesStrs as $codeStr) {
  3.     $codeStr = explode('=',$codeStr);
  4.     $codes[$codeStr[0]] = $codeStr[1];
  5. }
  6.  


Суть проста, в массиве $codesStrs содержатся строки вида 1234=543, и данный код аккуратно расскидывает их в массив $codes, ставя первое число из пары как ключ, а авторое как значение
Это работало на всех хостингах, но на одном я встретился с такой странной штукой. Внезапно оказалось, что вот в этой записи $codes[$codeStr[0]] PHP работает с $codes не как с массивом, а как со строкой. Тоесть, инициализирует $codes как строку и записывает в позицию номер $codeStr[0] значение из $codeStr[1]
Собственно, проблему с этим я решил, просто предварительно явно объявив $codes как массив, но суть не в этом. Мне просто крайне любопытно, каким образом PHP мог быть настроен для такого поведения?
2. LIME - 18 Января, 2012 - 19:24:16 - перейти к сообщению
NeoN121 сложно сказать в чем дело
маловато данных
как правило в таких случаях помогает var_dump()
воткните его везде и проследите за принимаемыми значениями
уверяю вопросы отпадут

 

Powered by ExBB FM 1.0 RC1