Использование 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

0

Решение

Начнем с очевидногокогда Eval зло в PHP?«, который я предполагаю, что вы знаете.

Для вашей ошибки есть несколько причин. Во-первых, код, который вы выполняете, следующий (который вы знаете по мере его печати):

$cars[0][1]

Так же, как это не будет делать ничего в сыром PHP (<?php $foo; ?>) это также ничего не делает в eval заявление (я добавил echo в моем коде, чтобы это исправить). Во-вторых, вы забываете точку с запятой в конце оператора (как и в любом PHP).

Следовательно, правильное утверждение будет выглядеть так:

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

DEMO

Если вы хотите, чтобы значение возвращалось в переменную, используйте 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"

DEMO

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector