【发布时间】:2012-01-04 20:22:02
【问题描述】:
我正在尝试用 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 数组中是否存在给定项目并返回它的路径。例如,如果我要检查带有id98(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。
有没有更好的方法来做到这一点?
谢谢。
【问题讨论】:
标签: php function multidimensional-array