@krysestark

Поиск и перебор массива по совпадению ключа?

Есть вот такой массив, который в который записываются данные при клике на кнопки, допустим записывается все так (при помощи AJAX):
$data = array_merge($dish_list, array(array("id"=>$_POST["d_id"],"count"=>$_POST["d_count"])));

Затем я добавил таким образом три элемента , получается вот такой массив:
Array ( 
	[0] => Array ( 
		[id] => 182
		[count] => 1
	) 
	[1] => Array ( 
		[id] => 182
		[count] => 2
	) 
	[2] => Array ( 
		[id] => 30
		[count] => 20
	) 
)

ОСОБЕННОСТЬ!
id всегда один и тот же, а вот поле count динамически можно выставлять какое угодно (но не ниже нуля и не ноль, это условие выполняется, думать ничего не надо).

Как перебрать массив по id, чтобы сам массив перезаписывался каждый раз при совпадении поля id и оставлял собственно только последний вариант, т.е. из того, что наверху должно остаться только так:
Array ( 
	[0] => Array ( 
		[id] => 30
		[count] => 20
	) 
	[1] => Array ( 
		[id] => 182
		[count] => 2
	) 
)

При этом если поменяется порядок, это не принципиально, главное, чтобы id не совпадало и выводилось всегда только последнее изменение поля count
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
$result = array_values(
     array_reduce($data, function($acc, $cur) {
        $acc[$cur['id']] = $cur;
        return $acc;
    }, [])
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы