Home > Backend Development > PHP Tutorial > 关于eval()老是出错

关于eval()老是出错

WBOY
Release: 2016-06-23 14:28:16
Original
2654 people have browsed it

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>";	}
Copy after login

这是结果
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;");
Copy after login


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无数据

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template