$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
答案 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
如果您希望将值返回到变量中,请使用<?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}}