Foreach数组相同的键值增量

时间:2016-05-25 20:48:15

标签: php arrays

我有这个foreach:

    foreach($statuses['data'] as $status){
    // processing likes array for calculating fanbase. 

    if(!empty($status['likes']['data']))
        {
            foreach($status['likes']['data'] as $likesData){
                $frid = $likesData['id']; 
                $frname = $likesData['name']; 
                $friendArray[$frid]++;
            }

        }   


print_r(array($friendArray));

}

结果如下:

Array ( [0] => Array ( 
[333] => 2 
[222] => 5 
[111] => 2
[444] => 3 ))
Array ( [0] => Array ( 
[444] => 4 
[222] => 3 
[333] => 6 
[111] => 2 
))
.. etc.

我想增加(或求和)相同的键值。我怎样才能做到这一点? 放print_r(array($friendArray)); 在foreach之外。谢谢

1 个答案:

答案 0 :(得分:0)

您可能只需要在开头定义$friendArray,例如

$friendArray = []; // initialize the array

foreach ($statuses['data'] as $status) {
    // processing likes array for calculating fanbase. 

    if (!empty($status['likes']['data'])) {
        foreach ($status['likes']['data'] as $likesData) {
            $frid = $likesData['id']; 
            $frname = $likesData['name']; 
// your version                $friendArray[$frid]++;
            if (array_key_exists($frid, $friendArray) || 0 == ($friendArray[$frid] = 0)) { 
                // always true but ensures the key is initialized
                $friendArray[$frid] ++;
            }

            isset($friendArray[$frid]) ? $friendArray[$frid] = 1 : $friendArray[$frid] ++;
        }
    }   
}

print_r($friendArray);