@kyja

Как оставить только уникальные значения массива с добавлением не повторяющихся значений ключа?

Подскажите пожалуйста как
На входе такой массив

spoiler

array(3) {
  [0]=>
  array(32) {
    ["ID"]=>
    string(6) "122689"
    ["DETAIL_PICTURE"]=>
    string(6) "334923"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_CML2_ARTICLE_VALUE"]=>
    string(6) "R23052"
    ["CODE"]=>
    string(23) "r23052_viaggio_italiano"
    ["PREVIEW_PICTURE"]=>
    string(6) "334922"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_HIDE_PRICE_VALUE"]=>
    NULL
    ["COUNTRIES_TAKE"]=>
    string(12) "Россия"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_ARCHIVE_VALUE"]=>
    NULL
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_video_cart_tovar_VALUE"]=>
    NULL
    ["MORE_FOTO_TAKE_1"]=>
    NULL
    ["MORE_FOTO_TAKE_2"]=>
    NULL
    ["RGB_NAME"]=>
    string(16) "Капучино"
    ["ELMS_NAME"]=>
    string(20) "Штукатурка"
    ["MATHERIALS_NAME"]=>
    string(33) "Флизелиновые обои"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_PRICE"]=>
    string(7) "4900.00"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_CATALOG_GROUP_ID"]=>
    string(1) "1"    
  }
  [1]=>
  array(32) {
    ["ID"]=>
    string(6) "122688"
    ["DETAIL_PICTURE"]=>
    string(6) "334829"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_CML2_ARTICLE_VALUE"]=>
    string(6) "M31943"
    ["CODE"]=>
    string(16) "m31943_magnifica"
    ["PREVIEW_PICTURE"]=>
    string(6) "334828"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_HIDE_PRICE_VALUE"]=>
    NULL
    ["COUNTRIES_TAKE"]=>
    string(12) "Италия"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_ARCHIVE_VALUE"]=>
    NULL
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_video_cart_tovar_VALUE"]=>
    NULL
    ["MORE_FOTO_TAKE_1"]=>
    string(10) "iblock/aca"
    ["MORE_FOTO_TAKE_2"]=>
    string(36) "acae11321a545f0da626165305557f6d.png"
    ["RGB_NAME"]=>
    string(16) "Капучино"
    ["ELMS_NAME"]=>
    string(20) "Штукатурка"
    ["MATHERIALS_NAME"]=>
    string(33) "Флизелиновые обои"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_PRICE"]=>
    string(7) "7000.00"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_CATALOG_GROUP_ID"]=>
    string(1) "1"    
  }
  [2]=>
  array(32) {
    ["ID"]=>
    string(6) "122688"
    ["DETAIL_PICTURE"]=>
    string(6) "334829"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_CML2_ARTICLE_VALUE"]=>
    string(6) "M31943"
    ["CODE"]=>
    string(16) "m31943_magnifica"
    ["PREVIEW_PICTURE"]=>
    string(6) "334828"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_HIDE_PRICE_VALUE"]=>
    NULL
    ["COUNTRIES_TAKE"]=>
    string(12) "Италия"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_ARCHIVE_VALUE"]=>
    NULL
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_video_cart_tovar_VALUE"]=>
    NULL
    ["MORE_FOTO_TAKE_1"]=>
    string(10) "iblock/2f4"
    ["MORE_FOTO_TAKE_2"]=>
    string(36) "2f43c48ee3262670e9a1bc3f9ed40f2d.png"
    ["RGB_NAME"]=>
    string(16) "Капучино"
    ["ELMS_NAME"]=>
    string(20) "Штукатурка"
    ["MATHERIALS_NAME"]=>
    string(33) "Флизелиновые обои"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_PRICE"]=>
    string(7) "7000.00"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_CATALOG_GROUP_ID"]=>
    string(1) "1"    
  }
}

Используя такой цикл я убираю дубли с ключами ID но
foreach($elements2_1 as $k => $v){        
        $sorted_array["$v[ID]"] = $v;
}
$elements2_1=array_values($sorted_array);

На выходе я получаю такой
spoiler

array(2) {
  [0]=>
  array(32) {
    ["ID"]=>
    string(6) "122689"
    ["DETAIL_PICTURE"]=>
    string(6) "334923"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_CML2_ARTICLE_VALUE"]=>
    string(6) "R23052"
    ["CODE"]=>
    string(23) "r23052_viaggio_italiano"
    ["PREVIEW_PICTURE"]=>
    string(6) "334922"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_HIDE_PRICE_VALUE"]=>
    NULL
    ["COUNTRIES_TAKE"]=>
    string(12) "Россия"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_ARCHIVE_VALUE"]=>
    NULL
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_video_cart_tovar_VALUE"]=>
    NULL
    ["MORE_FOTO_TAKE_1"]=>
    NULL
    ["MORE_FOTO_TAKE_2"]=>
    NULL
    ["RGB_NAME"]=>
    string(16) "Капучино"
    ["ELMS_NAME"]=>
    string(20) "Штукатурка"
    ["MATHERIALS_NAME"]=>
    string(33) "Флизелиновые обои"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_PRICE"]=>
    string(7) "4900.00"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_CATALOG_GROUP_ID"]=>
    string(1) "1"    
  }
  [1]=>
  array(32) {
    ["ID"]=>
    string(6) "122688"
    ["DETAIL_PICTURE"]=>
    string(6) "334829"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_CML2_ARTICLE_VALUE"]=>
    string(6) "M31943"
    ["CODE"]=>
    string(16) "m31943_magnifica"
    ["PREVIEW_PICTURE"]=>
    string(6) "334828"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_HIDE_PRICE_VALUE"]=>
    NULL
    ["COUNTRIES_TAKE"]=>
    string(12) "Италия"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_ARCHIVE_VALUE"]=>
    NULL
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_video_cart_tovar_VALUE"]=>
    NULL
    ["MORE_FOTO_TAKE_1"]=>
    string(10) "iblock/2f4"
    ["MORE_FOTO_TAKE_2"]=>
    string(36) "2f43c48ee3262670e9a1bc3f9ed40f2d.png"
    ["RGB_NAME"]=>
    string(16) "Капучино"
    ["ELMS_NAME"]=>
    string(20) "Штукатурка"
    ["MATHERIALS_NAME"]=>
    string(33) "Флизелиновые обои"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_PRICE"]=>
    string(7) "7000.00"
    ["IBLOCK_ELEMENTS_ELEMENT_CATALOG_price_value_CATALOG_GROUP_ID"]=>
    string(1) "1"    
  }
}

Проблема с тем чтобы оставить только с уникальными ID решается, но
MORE_FOTO_TAKE_1
MORE_FOTO_TAKE_2
и остальные множественные значения затираются одиночными

Подскажите пожалуйста как добавить во все ключи кроме ID значения из совпавших ID?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@Siverius
А если у вас есть две записи с одинаковыми ID, такие, что некоторые стринговые поля содержат в себе разную информацию, как планируете сохранять?
Пример:

$array1 = [
    "ID" => 42,
    "field" => "Earth",
];
$array2 = [
    "ID" => 42,
    "field" => "Mars",
];


Каким должен быть результирующий массив?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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