Почему обратная косая черта присутствует перед переменной в выражении eval?

Во время изучения PHP онлайн я остановился на этом eval функция, пожалуйста, помогите мне. Почему есть косая черта перед $str2 в eval заявление?

<?php
$string = "beautiful";
$time = "winter";

$str = 'This is a $string $time morning!';
echo $str. "<br>";

eval("\$str2 = \"$str\";");
echo $str2;
?>

-2

Решение

Косая черта уходит от знака доллара, иначе в двойных кавычках знаки доллара начинаются с имени переменной.

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;
1

Другие решения

eval анализирует строку как код php, если вы удалите их, оба $str а также $str2 будет заменено их содержимым, прежде чем оно будет проанализировано eval,

Так что с обратной косой чертой это будет разбирать

$str2 = "This is a beautiful winter morning!";

Без обратной косой черты это было бы разобрать

undefined = "This is a beautiful winter morning!";
0

Поскольку это помогает идентифицировать, что переменная используется и переменная с обратной косой чертой распознается компилятором, а затем имя переменной заменяется значением, которое она представляет.

0

Обратная косая черта используется для распознавания специальных символов PHP. В этом случае \ $ str2, указывающий на строку, содержит «$ str», а не переменную с именем $ str, которая имеет значение «Это $ string $ time morning!». Так что \ $ пока печатается как строка $, а не как переменная.

0
По вопросам рекламы [email protected]