关于eval()老是出错

lyolzj 2014-02-14 02:36:56
<?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
有谁能帮我分析下,为什么出错吗?
...全文
523 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2014-02-14
  • 打赏
  • 举报
回复
1. $res="1+3"; eval("\$v = \"$res\";"); var_dump($v); 2. $v无数据
一起混吧 2014-02-14
  • 打赏
  • 举报
回复
引用
定义和用法 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值,所以就报错了。
嘻哈大咖秀 2014-02-14
  • 打赏
  • 举报
回复
$v = eval("return $res;");
eval() 返回 NULL ,除非在执行的代码中 return 了一个值,函数返回传递给 return 的值。 如果在执行的代码中有一个解析错误, eval() 返回 FALSE ,之后的代码将正常执行。无法使用 set_error_handler() 捕获 eval() 中的解析错误。