Как удалить массив из многомерного массива?

Есть массив items. В нем массивы, содержащие значения fbo и fbs могут располагаться в разных порядках [0] или [1]:

Array (
[0] => Array (
    [product_id] => 111
    [offer_id] => AR-001
    [stocks] => Array (
        [0] => Array (
            [type] => fbo
            [present] => 0
            [reserved] => 0
            )
        [1] => Array (
            [type] => fbs
            [present] => 10
            [reserved] => 0
            )
        )
    )
[1] => Array (
    [product_id] => 222
    [offer_id] => AR-002
    [stocks] => Array (
        [0] => Array (
            [type] => fbs
            [present] => 0
            [reserved] => 0
            )
        [1] => Array (
            [type] => fbo
            [present] => 20
            [reserved] => 0
            )
        )
    )
)

В цикле foreach хочу удалить внутренние массивы, где есть fbo. Чтобы на выходе получился массив, содержащий только fbs. Вот так:

Array (
[0] => Array (
    [product_id] => 111
    [offer_id] => AR-001
    [stocks] => Array (
        [0] => Array (
            [type] => fbs
            [present] => 10
            [reserved] => 0
            )
        )
    )
[1] => Array (
    [product_id] => 222
    [offer_id] => AR-002
    [stocks] => Array (
        [0] => Array (
            [type] => fbs
            [present] => 0
            [reserved] => 0
            )
         )
    )
)

Пробую так:

 foreach ($items as $k => $v) {
  if ($v['stocks']['type'] == 'fbo') {
        unset($items[$k]);
    }

Но так не удаляется.

Как это можно сделать? Подскажите, пожалуйста. Желательно пример кода.

Сделала вот так:

$stocks = [
'stocks' => []  // в массиве $stocks создаем один элемент
];

foreach ($items as $itemIndex=>$item) {

    foreach($item['stocks'] as $stockIndex=>$stock) {
        if ($stock['type'] === "fbo") {
            unset($items[$itemIndex]['stocks'][$stockIndex]);
        }
    }
$stocks['stocks'][] = [
'offer_id'  =>  $item['offer_id'],
'stock' => $item['stocks'][1]['present'],
'warehouse_id' => '2222',
];
}

print_r($stocks);

Это работает, теперь остались только fbs. Но возникла другая проблема. Хочу поместить результат в массив stocks. Но на выходе получаю:

Array ( [stocks] => Array ( [0] => Array ( [offer_id] => AR-001 [stock] => 50 [warehouse_id] => 2222 )[1] => Array ( [offer_id] => AR-002 [stock] => 0 [warehouse_id] => 2222 ) ) )

Т.е. значения [stock] не верны. Там, где 0 должно быть количество, там где 10 должен быть 0. Что делаю не так?


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