есть вот такой массив в котором лежит 3 товара и передается через $_SESSION['shopping_cart'][]
:
array(3) {
[0]=>
array(3) {
["variant_id"]=>
int(154)
["amount"]=>
int(1)
["lvl"]=>
int(1)
}
[1]=>
array(3) {
["variant_id"]=>
int(157)
["amount"]=>
int(1)
["lvl"]=>
int(6)
}
[2]=>
array(3) {
["variant_id"]=>
int(167)
["amount"]=>
int(1)
["lvl"]=>
int(0)
}
}
Как мне удалить товар с variant_id = 157
, то-есть весь массив [1], но я знаю только variant_id
. Буду благодарен за вашу помощь!
Как вариант можно через цикл:
$arr = [
['variant_id' => 154, 'amount' => 1, 'lvl' => 1],
['variant_id' => 157, 'amount' => 1, 'lvl' => 6],
['variant_id' => 167, 'amount' => 1, 'lvl' => 0]
];
foreach($arr as $key => $value)
{
if ($value['variant_id'] == 157)
unset($arr[$key]);
}
print_r($arr);
Второй вариант с помощью функции array_filter
:
$id = 157;
$arr = array_filter($arr, function ($x) use ($id) {
return $x['variant_id'] !== $id;
});
print_r($arr);
Вы можете использовать, к примеру, функцию array_filter и включить туда более сложную логику, если понадобится. Ну смотрите.
$resultArray = array_filter($sessionArray, function ($value) use ($toDelete) {
return $value['variant_id'] !== $toDelete
});
Объяснение: $sessionArray
ваши исходные данные, а $toDelete
значение, которое нужно отбросить. Соответственно, вы можете оформить анонимную функцию отдельно и использовать многократно передавая то, что вам нужно удалить, а если быть точнее, то в данном контексте вы фильтруете свой ассоциативный массив, оставляя что вам нужно. Вы можете передать в use
, например, еще одно значение, которое будет являться ключом, который вам нужно будет отфильтровать и тогда сможете этой функцией, передавая ей соответствующие значения, добиваться фильтрации любых полей по заданным значениям.
Можно через поиск:
$arr = [
['variant_id' => 154, 'amount' => 1, 'lvl' => 1],
['variant_id' => 157, 'amount' => 1, 'lvl' => 6],
['variant_id' => 167, 'amount' => 1, 'lvl' => 0]
];
$id = 157;
if(($key = array_search($id,array_column($arr, 'variant_id'))) !== FALSE){
unset($arr[$key]);
}
Будет быстрее, чем filter
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как сжимать изображение, кадрировать со стороны сервера и выводить их так
Получаю с гугл таблицы цвет ячейки, выдает в таком виде red=1 green=1 blue=1
Не могу разобраться как создать кастомную форму для отправки комментариев без привязки к стандартной, поискал по интернету нашел необходимую...
Не получается подключить автозагрузкуКак правильно писать код для автозагрузки? Класс