Эта ошибка чаще всего встречается при попытке ссылаться на значение массива с помощью ключевого слова для интерполяции внутри строки с двумя кавычками , когда вся конструкция комплексной переменной не заключена в {}
.
Это приведет к Unexpected T_ENCAPSED_AND_WHITESPACE
:
echo "This is a double-quoted string with a quoted array key in $array['key']";
//---------------------------------------------------------------------^^^^^
В строке с двойными кавычками PHP разрешает использовать строки ключей ключей без кавычек и не выдаст E_NOTICE
. Таким образом, вышесказанное может быть записано как:
echo "This is a double-quoted string with an un-quoted array key in $array[key]";
//------------------------------------------------------------------------^^^^^
Вся сложная переменная массива и ключ (ы) могут быть заключены в {}
, и в этом случае они должны быть указаны чтобы избежать E_NOTICE
. Документация PHP рекомендует этот синтаксис для сложных переменных.
echo "This is a double-quoted string with a quoted array key in {$array['key']}";
//--------------------------------------------------------------^^^^^^^^^^^^^^^
// Or a complex array property of an object:
echo "This is a a double-quoted string with a complex {$object->property->array['key']}";
Конечно, альтернатива любой из вышеперечисленного заключается в объединении переменной массива in вместо интерполировать его:
echo "This is a double-quoted string with an array variable " . $array['key'] . " concatenated inside.";
//----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^
Для справки см. раздел «Переменная синтаксический анализ» в странице руководства PHP Strings
В странице справочника говорится, что коды состояния отображаются на, но не, что они на самом деле имеют в виду. От страницы руководителя:
'D' = uninterruptible sleep
'R' = running
'S' = sleeping
'T' = traced or stopped
'Z' = zombie
'R' является самым легким; процесс готов работать и будет работать каждый раз, когда его очередь использовать ЦП прибывает.
'S' и 'D' являются двумя состояниями сна, где процесс ожидает, что что-то произойдет. Различие - то, что 'S' может быть прерван сигналом, в то время как 'D' не может (это быть обычно замеченным, когда процесс ожидает диска).
'T' является состоянием, где процесс останавливается, обычно через SIGSTOP
или SIGTSTP
. Это может также быть остановлено отладчиком (ptrace
). Когда Вы видите, что состояние, это обычно - потому что Вы использовали Ctrl-Z для помещения команды на фон.
'Z' является состоянием, где процесс мертв (это закончило свое выполнение), и единственной оставленной вещью является структура, описывающая его на ядре. Это ожидает своего родительского процесса для получения его кода выхода, и не намного больше. После того, как его родительский процесс закончен с ним, это исчезнет.