Примерно так
// Product ID's to Search
$deposit_items = array( '4359', '4336', '4331', '4320' );
$cart_items = $cart_object->get_cart();
$cart_product_ids = array_column($cart_items, 'product_id');
$count = count(array_intersect($cart_product_ids, $deposit_items ));
Например
// Product ID's to Search
$deposit_items = array( '4359', '4336', '4331', '4320' );
$cart_items = [
['product_id' => 4359],
['product_id' => 4320]
];
$cart_product_ids = array_column($cart_items, 'product_id');
echo count(array_intersect($cart_product_ids, $deposit_items ));
Выход
2
Песочница
Этоможет быть сведено к одной строке, например:
$deposit_items = array( '4359', '4336', '4331', '4320' );
echo count(array_intersect(array_column($cart_object->get_cart(),'product_id'),$deposit_items));
Для справки
http://php.net/manual/en/function.array-column.php
http://php.net/manual/en/function.array-intersect.php
Столбец массива, берет этот большой многомерный массив и перезапускает один столбец, используя мой (несколько простой) пример:
$cart_items = [
['product_id' => 4359],
['product_id' => 4320],
['product_id' => 333]
];
Становится (я добавил 333, только для ударов)
[4359, 4320, 333]
В основном тот же формат, что и ваш $deposit_items
.Как только они совпадают, мы можем использовать пересечение массива, чтобы найти все элементы в массиве 1, которые появляются во втором массиве.В этом случае нам нужны указанные выше элементы массива, только если они находятся в $deposit_items
.Как только мы получим их, просто подсчитать их с подсчетом.
Песочница
Просто чтобы проиллюстрировать это дальше
print_r([
['product_id' => 4359],
['product_id' => 4320],
['product_id' => 333]
], 'product_id');
Вывод
[4359, 4320, 333]
Затем
print_r(array_intersect([4359, 4320, 333], ['4359', '4336', '4331', '4320']));
Выходные данные
[4359, 4320]
И затем счет довольно прямой вперед.
Другие вещи
По совпадению, если вы хотите сделать обратное, считайте элементы НЕ в $deposit_items
, вы просто замените array_intersect
на array_diff
.
echo count(array_diff(array_column($cart_items, 'product_id'), $deposit_items ));
Не в депозитных позициях
И если вы перевернете массивы с помощью массива diff, вы получите количество депозитных предметов, НЕ находящихся в корзине.
echo count(array_diff($deposit_items, array_column($cart_items, 'product_id')));
Нет в корзине
Ура!