2016-04-18 18 views
5

Làm cách nào để lặp lại tập hợp mảng phiên và kiểm tra xem $_session['items'][1][p_alt-variation-1] và v.v ... có tồn tại không? các [p_alt-variation- {n}] yếu tố này là động nếu mục nhất định có những add-on biến thể, vì vậy nó có thể được càng nhiều càng tốt hơn 1php kiểm tra xem phần tử có tồn tại thông qua mảng phiên

print_r ($ _ phiên [ 'mục'])

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 
    ) 

) 

tôi muốn hiển thị cho người dùng nếu mục nhất định có biến thể khác nhau trong giỏ hàng của họ nếu tồn tại, làm thế nào để tìm kiếm phần tử trong mảng nếu chứa chuỗi như [p_alt-variation- {n}] qua?

Tôi sử dụng foreach($_SESSION['items'] as $cart_item){ ... } để lặp tất cả các mục trong giỏ hàng để hiển thị thông tin của mục.

Cảm ơn lời khuyên.

Trả lời

2

Không phải là guru regex, nhưng bạn chỉ có thể lấy chìa khóa và kiểm tra bằng cách sử dụng preg_grep. Nếu nó có nhiều hơn một khóa cho từ khóa đó, chỉ cần đếm kết quả.

Dưới đây là ý tưởng:

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

Nếu bạn muốn sử dụng một số phím điều đó, chỉ cần sử dụng các kết quả đã được tìm thấy bên trong $matches:

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

nhờ ... nhưng tôi có một câu hỏi khác liên quan đến sau khi 'if (count ($ matches)> 1) {}', tôi muốn lặp lại và lặp lại '$ cart_item ['p_alt-variation- {n}'], làm thế nào tôi có thể làm điều đó? – Lisa8

+0

@ Lisa8 bạn chỉ có thể sử dụng 'foreach' một lần nữa bên trong' $ match' – Ghost

+0

Cảm ơn bạn rất nhiều, những gì một trợ giúp hữu ích !! – Lisa8

Các vấn đề liên quan