2016-01-21 45 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); 
} 

因此,我有类似的第一个值,即$ newar [“0”]。例如2235和2052.我想有第二个值的总和,例如$ 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

[你就能更好地运用'isset($尼瓦尔[$ explArr [0])',而不是使用另一个PHP函数'array_key_exists($ explArr [0],$ newar)'](https://3v4l.org/TRLqW) –

+0

@Uchiha因为?微优化? – Daan

相关问题