2013-04-30 7 views
0

У меня возникла ошибка с php. Ошибка «Предупреждение: Illegal строка Смещение" корень»это фактический код на линииПредупреждение: Недопустимое смещение строки 'root'

$root = $atts['root']; 

любая помощь будет оценена

+1

Можете ли вы попробовать запустить 'var_dump ($ atts)' и сообщить нам, что такое выход. – Dracs

+1

'print_r ($ atts);' для просмотра полного массива $ atts –

+0

Все, что мы знаем сейчас, это то, что $ atts - это строка, а не массив, который вы ожидали. Вам нужно будет опубликовать больше кода, если вы хотите получить более конкретный ответ от нас. – PleaseStand

ответ

1

В PHP синтаксис $var[$index] работает как с массивами и с строки. С массивом это возвращает элемент в индексе $index в массиве $var ($index может быть либо строкой, то есть $var является ассоциативным массивом или целым числом, что означает, что это нормальный массив (я уверен, что есть лучший термин для это, но я не знаком).

с строки, $index (называется смещение в данном случае) может быть только целым числом, и возвращает символ в позиции $index в строке. Так что если у вас есть $var = 'this is my string';, то $var[2] вернет букву «i» из «этого» (помните, что деление начинается с 0 для обоих массивов и строк).

Итак, в этом случае ясно, что вы ожидаете, что $atts будет массивом, но на самом деле это строка. Из-за этого вы не можете получить индекс из другой строки («root»), а всего лишь целое число. По этой причине вы получаете ошибку, которая в значительной степени суммирует то, что я написал выше. Использование строки в виде индекса или смещения для другой строки является незаконным (вы можете использовать только целые числа).

Не видя больше своего кода, я не смогу сказать, почему $atts - это строка, а не массив, как вы ожидаете, но, надеюсь, вам поможет понять, почему вы получаете эту ошибку.

Смежные вопросы