什麼是eval()?
eval() 函數把字符串按照 PHP 代碼來計算。
該字符串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字符串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。
語法
eval(phpcode)
復制代碼 代碼如下:
參數 描述
phpcode 必需。規定要計算的 PHP 代碼。
例子1
復制代碼 代碼如下:
<?php
$string = "beautiful";
$time = "winter";
$str = 'This is a $string $time morning!';
echo $str. "<br />";
eval("\$str = \"$str\";");
echo $str;
?>
輸出:
This is a $string $time morning!
This is a beautiful winter morning!
例子2
我們使用for循環創建n個隨便,值成倍增加
復制代碼 代碼如下:
<?php
for($i=1;$i<=10;$i++){
eval('$a'.$i.'='.($i*$i).';');
}
for($i=1;$i<=10;$i++){
eval('echo $a'.$i.'.\'<br />\' ;');
}
echo '<br />';
echo $a1 + $a10;
輸出:
復制代碼 代碼如下:
1
4
9
16
25
36
49
64
81
100
101
eval() 括號中必須是字符串
假如你寫 $a=1; eval("echo (\$a+\$b);"); 運行結果是 1
如果是 $a=1; eval("echo ($a+$b);"); 則報錯
這說明裡面最好是嚴格的字符串 並且是完整的PHP語句
$a=1; eval("echo \$a;");
$a=1; eval("echo $a;");
上面結果一樣 以為第一個eval 是執行了 echo $a; 而第二句是執行 echo 1;
$f ='$';
$f.$a.$this->i
這是什麼寫法,顯然應該就不是你要的效果,這相當於字符串連接了。大概你的意思是要這樣的,$($a.$this->i)。 其他的再慢慢考慮吧