@Aquinary
Хинафаг.

Каким образом получить массив в определённом формате?

Доброго времени суток!
Сразу к делу. Имеется следующая строчка кода в модуле Битрикса, которая формирует массив:
Формирование массива
$arBasketItems = ['NAME' => $arItems['NAME'], 'DETAIL_PAGE_URL' => $arItems['DETAIL_PAGE_URL'], 'EXTERNAL_CODE' => $arItems['PRODUCT_XML_ID']];
print_r получается по такому шаблону:
Выводим массив
Array 
( 
    [0] => Array 
    ( 
        [NAME] => Название товара 1
        [EXTERNAL_CODE] => Уникальный внешний код 1
    )
    [1] => Array 
    ( 
        [NAME] => Название товара 2
        [EXTERNAL_CODE] => Уникальный внешний код 2
    )
    [2] => Array 
    ( 
        [NAME] => Название товара 1
        [EXTERNAL_CODE] => Уникальный внешний код 1  
    )
)
Что требуется?
Получить массив следующего вида:
Желаемый результат
Array 
( 
    [0] => Array 
    ( 
        [NAME] => Название товара 1
        [EXTERNAL_CODE] => Уникальный внешний код 1
        [COUNT] => Количество товара (2)
    )
    [1] => Array 
    ( 
        [NAME] => Название товара 2
        [EXTERNAL_CODE] => Уникальный внешний код 2
        [COUNT] => Количество товара (1)
    )
)


Т.е. необходимо получить массив только с уникальными названием или внешним кодом, а так же количеством, в котором оно было до преобразования.

Пробовал мудрить с array_unique и array_search через foreach цикл - ничего толком не получилось.

Буду благодарен за любую помощь!
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
coderisimo
@coderisimo
sandbox.onlinephpfunctions.com/code/6c5f50911f2473...
запустите и смотрите на результат
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Arik
?
$result = [];
foreach ($arBasketItems as $d) {
    if (!isset($result[$d['NAME']])) {
        $result[$d['NAME']] = $d;
        $result[$d['NAME']]['count'] = 0;
    }
    $result[$d['NAME']]['count']++;
}
$result = array_values($result);
Ответ написан
twobomb
@twobomb
$arBasketItems = [];
foreach($arItems as $key => $val){
	foreach($arBasketItems as $key1 => $val1)
		if($val1['NAME'] == $val['NAME'] || $val1['EXTERNAL_CODE'] == $val['EXTERNAL_CODE'] ){
			$arBasketItems[$key1]['COUNT']++;
			goto end;
		}
	array_push($arBasketItems,['NAME' => $val['NAME'],'EXTERNAL_CODE' => $val['NAME'], 'COUNT' => 1]);
	end:
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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