Во время изучения PHP онлайн я остановился на этом eval
функция, пожалуйста, помогите мне. Почему есть косая черта перед $str2
в eval
заявление?
<?php
$string = "beautiful";
$time = "winter";
$str = 'This is a $string $time morning!';
echo $str. "<br>";
eval("\$str2 = \"$str\";");
echo $str2;
?>
Косая черта уходит от знака доллара, иначе в двойных кавычках знаки доллара начинаются с имени переменной.
echo $var; // print the content of $var
echo "$var"; // print the content of $var
echo "\$var"; // print '$var'
echo '$var'; // print '$var'
Другое дело, что вы должны найти другую книгу / учебник для изучения. Usign eval не рекомендуется и в этом случае плох.
Последние две строки вашего кода должны быть:
$str2 = $str;
echo $str2;
Или просто
echo $str;
eval анализирует строку как код php, если вы удалите их, оба $str
а также $str2
будет заменено их содержимым, прежде чем оно будет проанализировано eval
,
Так что с обратной косой чертой это будет разбирать
$str2 = "This is a beautiful winter morning!";
Без обратной косой черты это было бы разобрать
undefined = "This is a beautiful winter morning!";
Поскольку это помогает идентифицировать, что переменная используется и переменная с обратной косой чертой распознается компилятором, а затем имя переменной заменяется значением, которое она представляет.
Обратная косая черта используется для распознавания специальных символов PHP. В этом случае \ $ str2, указывающий на строку, содержит «$ str», а не переменную с именем $ str, которая имеет значение «Это $ string $ time morning!». Так что \ $ пока печатается как строка $, а не как переменная.