Member 13973487 Ответов: 1

Найдите массивы с повторяющимся значением и сравните их ключ


Здравствуйте, я хотел бы найти массивы с одинаковым значением ключа ЭАН Если существует несколько записей, я хочу удалить запись с меньшим значением ключа ProductCount.

Например, у меня есть массив. Как вы можете видеть, есть три записи стот же ЕАН ($arr[0], $arr[1], $a[3]). После нахождения этих записей с одним и тем же ean мне нужно сравнить их значения ключевого ProductCount и сохранить запись с помощью наименьшее значение из ProductCount. Вы меня понимаете?

Я был бы благодарен за любой совет.

$arr =array( 
"0" => Array
    (
        "ean" => 6900532615069,
        "productPrice" => 1140,
        "productCount" => 5
    ),
"1" => Array
    (
        "ean" => 6900532615069,
        "productPrice" => 1140,
        "productCount" => 50
    ),
"2" => Array
    (
        "ean" => 6900535364122,
        "productPrice" => 1140,
        "productCount" => 50
    ),

"3" => Array
    (
        "ean" => 6900532615069,
        "productPrice" => 1140,
        "productCount" => 10,
    ));


Таким образом, выход должен быть

$arr =array( 
"0" => Array
    (
        "ean" => 6900532615069,
        "productPrice" => 1140,
        "productCount" => 5
    ),
"1" => Array
    (
        "ean" => 6900535364122,
        "productPrice" => 1140,
        "productCount" => 50
    ));


Что я уже пробовал:

Я попробовал это и некоторые модификации этого, но безуспешно. Я пытаюсь сделать это в течение нескольких дней :(

function removeduplicateKeys($data){

$_data = array();

foreach ($data as $v) {
  if (isset($_data[$v['ean']])) {
    // found duplicate
    continue;
  }
  // remember unique item
  $_data[$v['ean']] = $v;
}

$data = array_values($_data);
return $data;

}

1 Ответов

Рейтинг:
0

W∴ Balboos, GHB

Самый простой способ - это перебирать Ваш массив, который имеет числовые индексы.

Каждый раз сравнивайте количество продуктов старого ean с новым значением ean. Сохраняйте меньшее значение и его индекс. Когда вы закончите цикл, у вас будет индекс. (Выясните, что делать, если галстук возможен и происходит).

Вышесказанное может быть применено очень широко, чтобы найти мин и Макс.