这是我的for循环代码
<?php
for ($x=0; $x<=10; $x++)
{
echo "The number is: $x <br>";
}
?>
我希望使用eval运行此代码,以便我如何运行它。 我试过这个
<?php
$var = ("for ($x=0; $x<=10; $x++)
{
echo 'The number is: $x <br>';
}");
eval($var);
?>
我想运行此代码以学习eval函数。我正在尝试这个,但没有得到任何答案。请建议你的答案。 请帮我这样做。
答案 0 :(得分:2)
尝试将双引号更改为单引号。默认情况下,双引号读取变量的值,因此您实际编写的内容(假设未设置$ x)不是for ($x=0; $x<=10; $x++)
,而是for (=0; <=10; ++)
,这将不起作用。
答案 1 :(得分:2)
它不起作用,因为在双引号字符串the variables are stil evaluated中。您的代码应使用简单引号才能工作:
<?php
$var = 'for ($x=0; $x<=10; $x++)
{
echo "The number is: $x <br>";
}';
eval($var);
?>
请注意,内部字符串仍应使用双引号,以便$x
评估变量echo
。
答案 2 :(得分:1)
问题是你使用双引号。当双引号字符串经过评估阶段时,您的$ x变量将被解释 - 就像在原始回声中一样。
如果您将其更改为使用单引号,则应该有效:
<?php
$var = ('for ($x=0; $x<=10; $x++)
{
echo \'The number is: \'.$x.\' <br>\';
}');
eval($var);
?>
以下是eval版本:
<?php
for ($x=0; $x<=10; $x++)
{
echo 'The number is: '.$x.' <br>';
}
?>
在我的控制台上打印:
C:\SO>php -v
PHP 5.3.2 (cli) (built: Mar 3 2010 20:47:01)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
C:\SO>php test.php
The number is: 0 <br>The number is: 1 <br>The number is: 2 <br>The number is: 3
<br>The number is: 4 <br>The number is: 5 <br>The number is: 6 <br>The number is
: 7 <br>The number is: 8 <br>The number is: 9 <br>The number is: 10 <br>
C:\SO>