2016-04-18 6 views
5

セッション配列のセットをループして、$_session['items'][1][p_alt-variation-1]などが存在するかどうかを確認するにはどうすればよいですか?それは1以上phpセッション配列を通して要素が存在するかどうかチェックする

ますprint_r($ _セッション[ 'アイテム'])

限りかもしれないので、特定の項目が、これらのアドオンばらつきがある場合[p_alt-variation- {N}]の要素が動的です
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 
    ) 

) 

Iは、貫通[p_alt-variation- {N}]のような文字列が含まれる場合、配列の要素を探すためにどのように存在する場合、特定の項目は、そのカート内の様々なバリエーションを有する場合にユーザーに対して表示したいですか?

私はforeach($_SESSION['items'] as $cart_item){ ... }を使用して、すべてのカートアイテムをループしてアイテムの情報を表示します。

ありがとうございました。

答えて

2

正規表現ではありませんが、鍵を取得してpreg_grepを使用して確認できます。そのキーワードに複数のキーがある場合は、結果を数えてください。ここで

はアイデアです:

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

おかげで...しかし、私は別の質問を持っている:あなただけ$matchesの中に発見された結果を使用し、そのキーの一部を使用したい場合は

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'; } } 

'if(count($ matches)> 1){}'の後にループして '$ cart_item ['p_alt-variation-{n}'をエコーし​​たいのですが、どうすればいいですか? – Lisa8

+0

@ Lisa8 '$ matches'の中で' foreach'をもう一度使うことができます – Ghost

+0

どうもありがとうございました! – Lisa8

関連する問題