Php 使用eval打印数组值

Php 使用eval打印数组值,php,arrays,eval,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 = 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);

我希望它能打印出值,也就是说,让我们从明显的“”开始,我想你知道

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

就像这在原始PHP中不起任何作用一样(
),它在
eval
语句中也不起任何作用(我在代码中添加了一个
echo
来解决这个问题)。其次,您忘记了语句末尾的分号(与任何PHP一样)

因此,正确的陈述如下所示:

$cars[0][1]

总之,
eval
计算语句,而不是OP认为的表达式。@georg绝对正确。这是一个很好的表达方式。是的,事实上,我认为这是一个很好的表达方式。PHP手册上的示例并不清楚。
$cars[0][1]
<?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

$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"