Как удалить массив из многомерного массива?
Есть массив 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. Что делаю не так?