BorisFX107
@BorisFX107
Начинающий WEB-программист :)

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

Имею такой массив:
$results = [ 
         ['order_id'  =>  'first',  'id'=> 1],
         ['order_id'  =>  'second',   'id'=> 4],
         ['order_id'  =>  'third',   'id'=> 7]
    ];

//Прогоняю в цикле с условием, что будет удален подмассив в котором 'id' равен 4.

foreach ($results as $item){
       foreach ($item as $value){
        }
        if ($item['id'] == 4)
        unset($item);
}
print_r ($results);


Однако, после всего что сделал, массив остается без изменений.
Хотя ['order_id' => 'second', 'id'=> 4] должен был удалиться.
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
нормальный ответ на этот вопрос
а то щас набегут со ссылками, или вон - фильтрами с подвыподвертом.

foreach ($results as $key => $item) {
    if ($item['id'] === 4) {
        unset($results[$key]);
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Используем array_filter:
<?php
$results = [
	['order_id' => 'first', 'id'=>1],
	['order_id' => 'second', 'id'=>4],
	['order_id' => 'third', 'id'=>7]
];

$filtered = array_filter(
	$results,
	function($el) {
		return $el['id'] != 4;
	}
);

var_export($filtered);


Share PHP code
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы