Знак доллара PHP в строках

Я не понимаю, почему 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

хе-хе