2016-01-21 2 views
0

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

Array (
    [0] => 1995,17500 
    [1] => 2052,17500 
    [2] => 2052,17500 
    [3] => 2236,30000 
    [4] => 2235,15000 
    [5] => 2235,40000 
); 

Я разобранный значение с запятой,.

foreach($array as $key=>$value) { 

     $newar = explode(',', $value); 
} 

Итак, у меня есть аналогичное первое значение i.e $ newar ["0"]. Например, 2235 и 2052. И я хотел бы получить сумму второго значения i.e $ newar ["1"].

Как добиться результата с помощью PHP.

Array (
    [0] => 1995, 17500 
    [1] => 2052, 35000 
    [2] => 2036, 30000 
    [3] => 2235, 55000 
) 

ответ

1

Вы можете создать новый массив ключ/индекс на основе и использовать array_key_exists, чтобы проверить, если ключ уже существует. Если так, суммируйте значение, если не создадите ключ. Это не точный результат, который вам нужен, но он более аккуратный.

$newar = []; //New Array 

foreach($array as $value) { 
    $explArr = explode(',', $value); 

    if(array_key_exists($explArr[0], $newar)){ //Check if the key already exists 
     $newar[$explArr[0]] += $explArr[1]; //Sum value to existing key 
    } else { 
     $newar[$explArr[0]] = $explArr[1]; //Create key 
    } 
} 

Ваш результат массив будет выглядеть следующим образом:

Array (
    [1995] => 17500 
    [2052] => 35000 
    [2036] => 30000 
    [2235] => 55000 
) 
+0

[Вы можете лучше использовать 'Исеть ($ неваров [$ explArr [0]])' вместо того, чтобы использовать другую функцию PHP 'array_key_exists ($ explArr [0], $ newar) '] (https://3v4l.org/TRLqW) –

+0

@Uchiha Потому что? Micro-оптимизации? – Daan

Смежные вопросы