结合数组并添加分数

时间:2013-07-21 10:47:06

标签: php arrays

我必须关联从两个返回以下

的搜索引擎生成的数组

Bing:

Array ( [cars.com/] => Array ( [score] => 100 )
        [car.com/] => Array ( [score] => 99 )
        [car.org/] => Array ( [score] => 98 ).....

谷歌:

Array ( [hertz.com/] => Array ( [score] => 100 )
        [edmunds.com/] => Array ( [score] => 99 )
        [thrifty.com/] => Array ( [score] => 98 )....

我想创建排名组合数组,bing数组是排名,然后我想添加Google数组,如果google网址数组匹配Bing数组中的网址我想添加分数,如果是网址不匹配然后我只想将它插入数组。

任何想法我将如何实现这一点。 此致

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

$combined = array(); 

foreach($bing as $key=>$value){ // for each bing item
    if(isset($combined[$key]))
        $combined[$key] += $value['score']; // add the score if already exists in $combined
    else
        $combined[$key] = $value['score']; // set initial score if new
}

// do the same for google
foreach($google as $key=>$value){
    if(isset($combined[$key]))
        $combined[$key] += $value['score'];
    else
        $combined[$key] = $value['score'];
}

print_r($combined); // print results

你可以使用一个函数而不是复制代码..如果你有更多的搜索引擎需要分析,那将是最好的。

答案 1 :(得分:0)

实际上,对基于如何创建组合数组执行操作数组进行基准测试会很有趣。

foreach ($google as $k=>$v){
    if(isset($google[$k]) $bing[$k]['score'] += $v['score'];
        else $bing[$k] = $v;