首頁 > 後端開發 > php教程 > 关于eval()老是出错

关于eval()老是出错

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-23 14:28:16
原創
2711 人瀏覽過

php eval()

<?php//	$res="array('price'=>'400','name'=>'kuke','time'=>'1024')";$res="1+3";	var_dump($res);	$v=eval($res);	var_dump($v);	echo $v;	foreach($v as $key=>$val){		echo $key."=".$val;	}//-------------------------------------------echo "<br/>";//--------------------------------------------$res=array('price'=>'400','name'=>'kuke','time'=>'1024');	var_dump($res);	echo "<br/>";	foreach($res as $key=>$val){		echo $key."=".$val."<br>";	}
登入後複製

这是结果
string(3) "1+3"
Parse error: syntax error, unexpected $end in D:\myweb\array.php(5) : eval()'d code on line 1
bool(false)
Warning: Invalid argument supplied for foreach() in D:\myweb\array.php on line 8

array(3) { ["price"]=> string(3) "400" ["name"]=> string(4) "kuke" ["time"]=> string(4) "1024" }
price=400
name=kuke
time=1024
有谁能帮我分析下,为什么出错吗?


回复讨论(解决方案)

$v = eval("return $res;");
登入後複製


eval()  返回 NULL ,除非在执行的代码中 return 了一个值,函数返回传递给 return 的值。 如果在执行的代码中有一个解析错误, eval()  返回 FALSE ,之后的代码将正常执行。无法使用 set_error_handler()  捕获 eval()  中的解析错误。 

定义和用法

eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
因此要这么写: $v=eval("return $res;");

Warning: Invalid argument supplied for foreach() in D:\myweb\array.php on line 8
这个错误是因为foreach只能遍历数组和对象,你传入$v 是bool值,所以就报错了。

1.
$res="1+3";
eval("\$v = \"$res\";");
var_dump($v);

2.
$v无数据

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
解決PHP錯誤顯示問題的方法
來自於 1970-01-01 08:00:00
0
0
0
java - springboot新手學習
來自於 1970-01-01 08:00:00
0
0
0
spring - JavaWeb中 Service 層的事務問題
來自於 1970-01-01 08:00:00
0
0
0
java - C語言演算法題-韓信點兵 解法?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板