在线学习PHP时,我停止了这个eval
功能,请帮助我。为什么在$str2
语句中eval
之前有斜杠?
<?php
$string = "beautiful";
$time = "winter";
$str = 'This is a $string $time morning!';
echo $str. "<br>";
eval("\$str2 = \"$str\";");
echo $str2;
?>
答案 0 :(得分:1)
斜线逃脱美元符号,否则双引号中美元符号开始变量名称。
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 :(得分:0)
eval将字符串解析为php代码,如果要删除它们,$str
和$str2
将被eval
解析之前将被其内容替换。
所以使用反斜杠它会解析
$str2 = "This is a beautiful winter morning!";
没有反斜杠就会解析
undefined = "This is a beautiful winter morning!";
答案 2 :(得分:0)
因为它有助于识别使用该变量,并且编译器识别带有反斜杠的变量,然后变量名称将替换为它所代表的值。
答案 3 :(得分:0)
反斜杠用于识别PHP特殊字符。在这种情况下,\ $ str2表示一个字符串包含&#34; $ str&#34;不是一个名为$ str的变量,它是值&#39;这是$ string $ time morning!&#39;。所以\ $同时打印为字符串$而不是变量。