Php | Array | Проверка

Если очень кратко

$products = [53238, 50572, 50573, 50586];

И есть массив

$checks = [ 
            49547 => [['pid' => 15340, 'add' => 50565], ['pid' => 12182, 'add' => 50574] ],
            53238 => [['pid' => 50572, ], ['pid' => 50573] ],
            53240 => [['pid' => 50587, ], ['pid' => 50590] ],
            49546 => [['pid' => 50586, ], ['pid' => 50581] ],
        ];

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

53238 => [['pid' => 50572, ], ['pid' => 50573] ], 

и в корзине есть этот комплект, значит эти 2 товара и сам комплект не трогаем. А вот продукт с id 50586 - лишний, так как нет его комплекта.

Как мне сделать обычную проверку? Просто условие, а далее я сам сделаю удаление и тд. Спасибо!)


Ответы (1 шт):

Автор решения: delikates

Как-то так, если я Вас правильно понял

$products = [53238, 50572, 50573, 50586];
$checks = [ 
            49547 => [['pid' => 15340, 'add' => 50565], ['pid' => 12182, 'add' => 50574] ],
            53238 => [['pid' => 50572, ], ['pid' => 50573] ],
            53240 => [['pid' => 50587, ], ['pid' => 50590] ],
            49546 => [['pid' => 50586, ], ['pid' => 50581] ],
        ];
foreach( $checks as $idx => $check) {
    if ( in_array( $idx, $products ) ) {
        $values = array_values( $check );
        foreach( $values as $value ) {
            if ( !in_array( $value, $products ) ) {
                //do something...
            }
        }
    }
}
→ Ссылка