Я не понимаю, почему PHP не производит замены в строках, содержащих знаки доллара. Посмотрите на следующий пример:
<?php error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE); $var = 1024; $str = '$var'; echo $str, '<br>', "$str";
Вывод – $ var $ var . Почему это так? Все ясно с первым параметром echo , но я ожидал, что последний параметр даст другой результат (1024), поскольку он содержит знак доллара, заключенный в двойные кавычки, поэтому его следует интерпретировать как переменную и заменить на 1024. Где я иду неправильно?
$str содержит строку с содержимым "$var" (без замены переменных, только эти самые символы). Он был создан с использованием одинарных кавычек, поэтому нет замены переменных.
При повторении echo "$str" с помощью echo "$str" переменная $str заменяется ее содержимым, а именно строкой "$var" , что приводит к выходу.
Замена строк в строках с двойными кавычками не работает рекурсивно! Таким образом, чтобы во второй внешности заменить $str на 1024 , вам необходимо создать $str используя двойные кавычки.
" позволяет размещать переменные внутри строки.
' берет все внутри, как строку.
Итак, если вы делаете '$var' – это строка с $ внутри.
"$str" принимает значение $str поэтому он печатает $var
$ str содержит литеральную строку $ var, которая никогда не будет интерпретироваться, так как она находится между одинарными кавычками.
Чтобы интерпретировать его, вам нужно eval ()
eval($str)
выдает 1042
Вы имеете в виду это?
<?php error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE); $var = 1024; $str = $var; echo $str, '<br>', "$str";
Вывод –
1024
1024
хе-хе