2016-04-18 17 views
5

के माध्यम से मौजूद है, मैं सत्र सरणी के सेट के माध्यम से कैसे लूप कर सकता हूं और जांच सकता हूं कि $_session['items'][1][p_alt-variation-1] और इसी तरह मौजूद हैं? [P_alt-variation- {n}] तत्वों गतिशील यदि कुछ आइटम है कर रहे हैं इन ऐड-ऑन विविधताओं, तो यह ([ 'आइटम'] $ _ सत्र) 1 से अधिकphp जांचें कि क्या तत्व सत्र सरणी

print_r जितना हो सकता है

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}] के माध्यम से?

मैं आइटम की जानकारी दिखाने के लिए सभी कार्ट आइटमों को लूप करने के लिए foreach($_SESSION['items'] as $cart_item){ ... } का उपयोग करता हूं।

सलाह के लिए धन्यवाद।

उत्तर

2

रेगेक्स गुरु नहीं, लेकिन आप केवल preg_grep का उपयोग करके चाबियाँ प्राप्त कर सकते हैं और जांच सकते हैं। यदि उस कीवर्ड के लिए एक से अधिक कुंजी हैं, तो केवल परिणामों की गणना करें।

यहाँ विचार है:

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

आपको लगता है कि कुंजी से कुछ का उपयोग करने के लिए, बस परिणाम है कि $matches अंदर मिला था का उपयोग करना चाहता था, तो:

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

धन्यवाद ... लेकिन मैं एक और सवाल है 'अगर (गिनती ($ मैचों)> 1) {}' के बाद के संबंध में, मैं 'कार्ट_इटम ['p_alt-variation- {n}'] को लूप करना और गूंजना चाहता था, मैं यह कैसे कर सकता हूं? – Lisa8

+0

@ लिसा 8 आप '$ मैचों' – Ghost

+0

के अंदर फिर से 'foreach' का उपयोग कर सकते हैं, बहुत बहुत धन्यवाद, क्या उपयोगी मदद !! – Lisa8

0

सत्र चर किसी भी अन्य सरणी मानों की तरह हैं; आप हमेशा जारी फ़ंक्शन का उपयोग कर सकते हैं। कृपया देखें: http://php.net/manual/en/function.isset.php

संबंधित मुद्दे