@sreug

Как сравнить значения в цикле и построить уникальный массив?

У меня есть цикл,который находится внутри другого цикла,повторяющегося n раз,во внутреннем цикле мне нужно сравнить значения одного массива со значениеми другого и раскидать это всё по другим массивам,но у меня в результате получается либо массив из одинаковых элементов(есди использую break) или длинный массив

while() {
      ...

      foreach($propertyArr as $key => $item) {

            if ($item['XML_ID'] == $arr['id']) {
                $doubleArr[] = $item;
                break;
            } elseif ($item['NAME'] == $arr['name']) {
                $replaceArr[] = $item;
                break;
            } else{
                $item += ['new_id' => $arr['id']];
                $passArr[] = $item;
                break;
            }

        }
}
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
@sagechild
программист php
Чтобы получить уникальный массив нужно, всего лишь, использовать в нем какое-то значение в виде уникального ключа. То есть выглядеть должно примерно так:
if ($item['XML_ID'] == $arr['id']) {
    $doubleArr[$item['XML_ID']] ??= $item;
} elseif ($item['NAME'] == $arr['name']) {
    $replaceArr[$item['NAME']] ??= $item;
} else{
    $passArr[$arr['id']] ??= $item;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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