关于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
有谁能帮我分析下,为什么出错吗?
...全文
请发表友善的回复…
发表回复
码无边 2014-02-14
- 打赏
- 举报
1.
$res="1+3";
eval("\$v = \"$res\";");
var_dump($v);
2.
$v无数据
一起混吧 2014-02-14
- 打赏
- 举报
因此要这么写: $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() 中的解析错误。