2013-02-08 1 views
0

Хорошо, так что я пытаюсь достичь на самом деле довольно просто. Я просто просто не знаю, как и надеюсь, что вы сможете помочь.Матрица массива PHP, удаление дубликатов и добавление строк массива

У меня есть массив с двумя значениями, идентификатором пользователя и значением транзакции. Идентификатор пользователя НЕ уникален, и мне нужен список/массив из тех же значений, просто «суммированный». Значение: Если идентификатор пользователя имеет больше вхождений, то я хотел бы, чтобы второе значение (транзакция) было добавлено вместе. Я отправлю пример.

$a = array(
    1 => 1, 
    1 => 2, 
    2 => 3, 
    2 => -17 
); 

Результата после выполнения любой функции требуется, это:

$a = array(
    1 => 3, 
    2 => -14 
); 

Так что не Продублируй идентов и значение сделки добавляется к одной записи идента.

Я получаю эти значения из базы данных SQL, так что, если я могу решить эту проблему с точки зрения SQL или что-то, что будет также идти как действительный ответ :-)

Большое спасибо заранее!

+2

такой массив не мог существуют ... если вы дважды назначаете ключ, второе присваивание перезапишет первое. как указано, ваш массив будет содержать только «1 => 2, 2 => -17' без обмана. –

+0

Если вы планируете извлекать данные, которые выглядели бы так из базы данных, используйте функции агрегации базы данных с GROUP BY, чтобы достичь того, чего вы хотите в операторе SELECT –

ответ

3

В SQL Server, если ваши столбцы говорят, идентификатор и значение, вы могли бы сделать

select sum(value) from table_name group by id 
+0

Это решение. Не поймите, почему люди сбиты с толку. – cowboybebop

+0

Я не вижу ни одного смещения этого ответа; только один взлет –

+0

Ах, извините, Смотрел на что-то еще. – cowboybebop

-2
$a = array(
    1 => 1, 
    1 => 2, 
    2 => 3, 
    2 => -17 
); 

$b = array_unique($a); 
+1

-1 - Это не может работать, такой массив не может существуют в PHP; и не достигнет суммирования того, что хочет OP –

0

Посмотрите на этот

$array = array_unique($array); 

function.array-unique

+0

Не отправляйте ответ, который не может достичь того, чего хочет OP –