使用eval打印数组值

时间:2015-02-12 09:58:51

标签: php arrays eval

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

$key = '[1][0]';
$str = '$cars'.$key;
echo $str."\n";
eval($str);

输出:

$cars[1][0]
PHP Parse error:  syntax error, unexpected end of file in ... : eval()'d code on line 1

我希望它能打印出来的值,即BMW

1 个答案:

答案 0 :(得分:2)

让我们从显而易见的" when is eval evil in php?"开始,我假设你知道。

对于您的错误,有多种原因。首先,您执行的代码如下(您知道正在打印它):

$cars[0][1]

就像在原始PHP(<?php $foo; ?>)中做任何事情一样,它在eval语句中也没有做任何事情(我在我的echo中添加了<?php $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); $key = '[1][0]'; $str = 'echo $cars' .$key . ';'; // "echo $cars[0][1];" echo $str."\n"; eval($str); // will echo "BMW" 修复此问题的代码)。其次,您在语句末尾忘记了分号(与任何PHP一样)。

因此,正确的陈述如下:

return

DEMO

如果您希望将值返回到变量中,请使用<?php $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); $key = '[1][0]'; $str = 'return $cars' .$key . ';'; // "return $cars[0][1];" echo $str."\n"; $var = eval($str); var_dump($var); //string(3) "BMW"

{{1}}

DEMO