2013-06-29 2 views
-2

Почему я получаю эти ошибки?Почему я получаю ошибку «Недопустимое смещение строки»?

Внимание: Нелегальная строка смещения 'ен' в C: \ XAMPP \ HTDOCS \ \ включает в себя stream.class.php по линии 48

Предупреждение: Illegal строку смещения 'ен' в C: \ XAMPP \ htdocs \ includes \ stream.class.php в строке 60

Вот мой код.

$s['target_data']['title'] = $s['target_data']['title']['en']; 
$s['target_data']['description'] = $s['target_data']['description']['en']; 

ответ

3

Проблема заключается в том, что $s['target_data']['title'] является строкой, а не массив, как вы, кажется, ожидая.

PHP позволяет использовать синтаксис массива типа для индекса в строке ($string[0] возвращает первый символ $string, например), но это работает только с числовыми индексами, как [0] - вы не можете использовать строковые индексы, как ["en"], который о чем жалуется ошибка.

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

+0

Почему нисходящий? Что-то не так с этим ответом? – jcsanyi

-1
(array) $s['target_data']['title'] = (array) $s['target_data']['title']['en']; 


    (array) $s['target_data']['description'] = (array)$s['target_data']['description']['en']; 

если ваш $ S [ 'target_data'] [ 'описание'] и $ s [ 'target_data'] [ 'название'] не являются массивы, вы можете бросить его как (массив)

+0

Это может исправить ошибку, но всегда будет возвращать 'null' (и, возможно, генерировать предупреждение для неопределенного индекса массива) - не очень полезно при фактическом поиске элемента' en'. – jcsanyi

+0

Вы правы, уведомление будет показано. Если индекс [en] равен null, результат всегда будет нулевым. Затем нужно работать над [en] index –

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