PHP Unify повторяющийся массив

в моем PHP-коде у меня много таких массивов:

0 = ['attr_id':1,'name':'qty','value':'100'];
1 = ['attr_id':1,'name':'qty','value':'200'];
2 = ['attr_id':1,'name':'qty','value':'500'];
3 = ['attr_id':2,'name':'price','value':'10$'];

Я хочу объединить этот массив следующим образом:

0 = ['attr_id':1,'name':'qty','value':['100','200','500']];
1 = ['attr_id':1,'name':'price','value':'10$'];

ребята, вы можете мне помочь? Благодарность

attr_id':1 на обоих? Опечатка? Вы пробовали использовать цикл или что-нибудь еще?
Andreas 06.06.2018 22:23

Вы сдались?

AbraCadaver 07.06.2018 17:15

@AbraCadaver нет, ваше решение работает для меня. Благодарность :)

Mohammadreza 07.06.2018 17:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это один из методов, в котором вы просматриваете массив array_column идентификаторов и используете ключ для вставки значений из массива значений.

$value = array_column($arr, 'value');
$id = array_column($arr, 'attr_id');
$res =[];

Foreach($id as $key => $i){
    If(!isset($res[$i])) $res[$i] = ['attr_id' => $i, 'name'=>'qty', 'value' => []];
    $res[$i]['value'][] = $value[$key];
}
Var_dump($res);

https://3v4l.org/VXI5E

Как видите, я использую идентификатор в качестве ключа для отслеживания массива результатов. Если вы хотите очистить это, то есть сбросить счет с 0, используйте array_values.

$res = array_values($res);

Обновлено: также 10 $ находятся внутри массива в моем ответе, это, на мой взгляд, упрощает использование массива позже. Если вы должны сохранить его как строку, я могу исправить это, но, вероятно, будет сложнее использовать массив позже со смешанным элементом.

Ответ принят как подходящий

Это должно быть проще. Постройте результат, используя attr_id в качестве индекса, и добавьте value:

foreach($array as $values) {
    $result[$values['attr_id']]['value'][] = $values['value'];
    $result[$values['attr_id']] = $result[$values['attr_id']] + $values;
}

Если вам нужно переиндексировать, просто используйте array_values() на $result.

Другие вопросы по теме