@9StarRu

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

Необходимо из массива с данными $items, получить уникальные данные по id

Мой массив:
$items = array_merge($day, $threedays, $week, $check, $new);
Получаю список всех id из массива
foreach ($items as $item) {
$arr[] = $item->id;  // список всех id
}

Выбираю уникальные id
$unique_id = array_unique($arr);  // список уникальных id

Как дальше вывести из $items уникальные данные по id из $unique_id?

foreach ($items as $item -> $unique_id ) { // не понятно
$title = $item->title;  // список всех id
}
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
@qfake
Убираете $arr[] и $unique_id.
c $items делаете следующее:
$unique_items = [];
		foreach ($items as $item) {
			if (!isset($unique_items[$item['id']])) {
				$unique_items[$item['id']] = $item;
			}
		}


в итоге получаете массив, где ключи - уникальные айдишники, значения - все, что должно содержаться в каждом из $items.
‌‌$unique_items
‌array (
  203 => 
  array (
    'isMon' => false,
    'rate' => 53,
    'id' => 203,
    'title' => 'Title',
  ),
  204 => 
  array (
    'isMon' => false,
    'rate' => 53,
    'id' => 204,
    'title' => 'Title1',
  ),
)


Далее можете обращаться к каждому из элементов массива $unique_items и брать оттуда title. Тут нужна помощь?
P.S. Сделано по вводным данным без поправки на $item['data'] и, возможно, есть более оптимальные способы решить вашу задачу,но для этого нужно знать ее всю, поэтому пишу по тому, что имеется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
motokraft
@motokraft
Кратко о себе
foreach ($items as $item)
{
    if(in_array($item->id, $unique_id))
    {
        echo $item->title;
    }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 16:26
3000 руб./за проект
03 мая 2024, в 16:09
1200 руб./за проект
03 мая 2024, в 16:06
3000 руб./за проект