в моем 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$'];
ребята, вы можете мне помочь? Благодарность
Вы сдались?
@AbraCadaver нет, ваше решение работает для меня. Благодарность :)






Это один из методов, в котором вы просматриваете массив 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);
Как видите, я использую идентификатор в качестве ключа для отслеживания массива результатов. Если вы хотите очистить это, то есть сбросить счет с 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.
attr_id':1на обоих? Опечатка? Вы пробовали использовать цикл или что-нибудь еще?