2015-10-06 2 views
0

здесь я пытаюсь удалить значение из массива, здесь я передаю действие и id на страницу. Я проверяю, были ли значения установлены, а затем выполните действие.Как удалить значение из массива по значению

Я хочу удалить значение из массива по значению. здесь product_id - это значение, которое я передаю, и значение должно быть удалено из массива.

напр: action=remove&product_id=22 значение 22 должно быть удалено из массива

<?php 
    if(isset($_GET['action']) && isset($_GET['product_id'])){ 
     if($_GET['action'] == "add"){ 
      $product_id = $_GET['product_id'];    
      $_SESSION['cart'][] =$product_id; 
     } 

     if($_GET['action'] == "remove"){ 
      unset($_SESSION['cart'][$product_id]); 
      echo "product_remove"; 
     } 
    }  
?> 

, как я могу это сделать?

+1

Используйте 'array_search()' – Rizier123

ответ

2

AS @Rizier сказал в комментарии, используйте array_search, как показано ниже:

if($_GET['action'] == "remove"){ 
    $key = array_search ($product_id, $_SESSION['cart']); 
    unset($_SESSION['cart'][$key]); 
    echo "product_remove"; 
} 
1

Вы можете использовать array_search ($ product_id, $ _SESSION [ 'телега']);

Это даст вам ключ к снятию. Если вы хотите отключить его так, как вы делаете сейчас, вам придется использовать идентификатор продукта в качестве ключа при добавлении в корзину.

Надеюсь, это поможет!

1

вы могли бы использовать array_search() как сказал Rizier123, но более производительный способ будет использовать array_flip и вытирания product_id

if($_GET['action'] == "remove"){ 
    unset(array_flip($_SESSION['cart'])[$product_id]); 
    echo "product_remove"; 
} 
3
if ($_GET['action'] == 'remove') { 
    if (array_key_exists($product_id, $_SESSION['cart'])) { 
     unset($_SESSION['cart'][$product_id]); 
     echo 'product_remove'; 
    } 
} 
Смежные вопросы