Скажите, что это ваш $_SESSION['basket']
:
Array
(
[0] => Array
(
[id] => 12
[name] => some name
[color] => some color
)
[1] => Array
(
[id] => 8
[name] => some name
[color] => some color
)
[2] => Array
(
[id] => 3
[name] => some name
[color] => some color
)
[3] => Array
(
[id] => 22
[name] => some name
[color] => some color
)
)
Сначала вам нужно пройти по всем отдельным элементам массива $_SESSION['basket']
:
foreach ($_SESSION['basket'] as $i => $product) {
/*
$i will equal 0, 1, 2, etc.
and is the position of the product within the basket array.
$product is an array of itself, which will equal e.g.:
Array
(
[id] => 12
[name] => some name
[color] => some color
)
*/
}
Теперь вы хотитезнать, соответствует ли id
продукта идентификатору продукта, который вы ищете.Вам не нужно проходить через каждый элемент массива $product
, чтобы сделать это, при условии, что ваш ID всегда будет называться «id».Вместо этого просто проверьте поле id
:
foreach ($_SESSION['basket'] as $i => $product) {
if ($product['id'] == $someId) {
// at this point you want to remove this whole product from the basket
// you know that this is element no. $i, so unset it:
unset($_SESSION['basket'][$i]);
// and stop looping through the rest,
// assuming there's only 1 product with this id:
break;
}
}
Обратите внимание, что существует опасность проверки значений, а не ключей.Скажем, у вас есть продукт, который создается следующим образом:
Array
(
[count] => 12
[id] => 5
[name] => some name
[color] => some color
)
Если вы пройдете все значения, как сейчас, и попытаетесь сопоставить это с определенным идентификатором, что произойдет, когда этот идентификатор произойдет сбыть "12"?
// the id you're looking for:
$someId = 12;
foreach ($product as $key => $value) {
// first $key = count
// first $value = 12
if ($value == $someId) {
// ...
// but in this case the 12-value isn't the id at all
}
}
Итак: всегда ссылаться на конкретный элемент из массива, в данном случае это "id" (или любое другое имя, которое вы использовали в своем приложении).Не проверяйте случайные значения, так как вы не можете быть абсолютно уверены, что при совпадении это на самом деле правильное значение, которое вы ищете.
Удачи!