2016-04-18 7 views
5

Oturum dizisi kümesiyle nasıl bağ kurabilirim ve $_session['items'][1][p_alt-variation-1] vb. Var mı kontrol edin? Belirli madde varsa [p_alt-variation- {n}] öğeleri dinamik olan bu eklenti varyasyonları, bu ([ 'öğeleri'] $ _ oturum) 1'den fazlaphp öğesinin oturum dizisiyle var olup olmadığını kontrol edin

print_r kadar olabilir böylece

gibi dize içeriyorsa, nasıl dizideki eleman aramaya varsa belirli madde sepetlerindeyken çeşitli varyasyonları varsa ben kullanıcı için göstermek istiyorum
Array 
(
[0] => Array 
    (
     [p_name] => Hovid PetSep 
     [p_code] => 336910 
     [p_coverImg] => 14-1460428610-ulNvG.jpg 
     [p_id] => 14 
     [p_price] => 24.50 
     [p_qty] => 2 
    ) 

[1] => Array 
    (
     [p_name] => X-Dot Motorbike Helmet G88 + Bogo Visor (Tinted) 
     [p_code] => 2102649 
     [p_coverImg] => 12-1460446199-wI5qx.png 
     [p_id] => 12 
     [p_price] => 68.00 
     [p_alt-variation-1] => Red 
     [p_alt-variation-2] => L 
     [p_qty] => 1 
    ) 

) 

[p_alt-variation- {n}] aracılığıyla?

Tüm sepet öğelerini öğenin bilgilerini göstermek için foreach($_SESSION['items'] as $cart_item){ ... } kullanıyorum.

Tavsiye ettiğiniz için teşekkür ederiz.

cevap

2

Regex guru değil, sadece anahtarları alabilir ve preg_grep'u kullanarak kontrol edebilirsiniz. Söz konusu anahtar kelime için birden fazla anahtar varsa, sonuçları yalnızca sayın. İşte

fikir:

if(count($matches) > 1) { 
    foreach($matches as $matched_key) { 
     echo $cart_item[$matched_key]; 
    } 
} 
+0

teşekkürler ... ama başka bir soru vardır: sadece $matches içinde buldu sonuçlarını Kullanıcılara bu tuşların bazı kullanmak istiyorsa

foreach($_SESSION['items'] as $cart_item) { // loop the items $keys = array_keys($cart_item); // get the keys of the current batch // make the expression $matches = preg_grep('~^p_alt\-variation\-\d+~i', $keys); // simply just checking the key name with has a number in the end, adjust to your liking if(count($matches) > 1) { // if it has more than one, or just change this to how many do you want echo 'has more than one variation'; } } 

(eğer (count ($ match)> 1) {} 'ile ilgili olarak, döngüden geçmek istedim ve $ cart_item ['p_alt-variation- {n}'] eko istedim, bunu nasıl yapabilirim? – Lisa8

+0

@ Lisa8 sadece '$ match' içinde 'foreach'ı kullanabilirsin – Ghost

+0

Teşekkür ederim, ne kadar yararlı bir yardım! – Lisa8