我想在php中编写购物车,并且在多维数组中获取/设置值有问题。 我保留当前订单$_SESSION['basket']
。它看起来像这样:函数动态获取/设置多维数组中的值
[basket] => Array
(
[0] => Array
(
[pid] => 3
[name] => Camera
[price] => 200.99
[quantity] => 1
)
[1] => Array
(
[pid] => 5
[name] => Computer
[price] => 320.99
[quantity] => 1
[extras] => Array
(
[0] => Array
(
[pid] => 86
[name] => RAM
[price] => 99
[qty] => 1
)
[1] => Array
(
[pid] => 98
[name] => CD-ROM
[price] => 19.99
[qty] => 1
)
)
)
)
每个项目都存储为一个子阵列。我有一个函数,它检查basket
数组中是否存在给定的项目,并返回它的路径。例如,如果我想检查产品是否带有id
98
(CD-Rom),则该函数将返回以下路径:1:extras:1
。
我无法弄清楚如何使用路径,如果我想获得或设置一个值在数组中。是否有可能构建数组键的路径,而不使用eval()
?我有这些功能:
function get_val($array, $path, $key) {
//some code
return eval('return '.$array.$path.$key.';');
}
所以,$price = get_val($_SESSION['basket'], $path, 'price')
;应返回的价格为CD-ROM(19.99)
function set_val($array, $path, $key, $value) {
//some code
$str = eval(''.$array.$path.$key.';');
$str = $value;
}
set_val($_SESSION['basket'], $path, 'price', '30');
会为CD-ROM的价格设定为30
是否有这样做的更好的办法?
谢谢。
的eval是邪恶的! –