php'de bir alışveriş sepeti yazmaya çalışıyorum ve çok boyutlu dizilerde get/set değerleriyle ilgili bir sorun yaşıyorum. Geçerli siparişi $_SESSION['basket']
'da saklıyorum. Şöyle görünüyor:, dinamik olarak çok boyutlu dizilerdeki değerleri almak/ayarlamak için işlevler
[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
)
)
)
)
Her öğe bir alt öğe olarak saklanır. Verilen bir öğenin basket
dizisinde var olup olmadığını denetleyen ve ona yolunu döndüren bir işlevim var. Örneğin, bir ürünün id
98
(CD-Rom) ile kontrol edilmesini istiyorsanız, işlev şu yolu döndürür: 1:extras:1
.
Dizide olsun veya almak istediğinizde yolu nasıl kullanacağımı anlayamıyorum. eval()
kullanımı olmadan bir dizi anahtar yolunu oluşturmak mümkün mü? Ben bu işlevleri vardır:
function get_val($array, $path, $key) {
//some code
return eval('return '.$array.$path.$key.';');
}
Yani, $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');
30.
Bunu yapmak için daha iyi bir yolu var mı için CD-ROM fiyatını belirleyecektir fiyatını dönmelidir?
Teşekkür ederiz.
eval kötüdür !!! –