我想在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是邪惡的! –