1 回答
TA贡献2036条经验 获得超8个赞
这就是我将如何解决它,这只是一个循环和最后的 usort 以根据 newRank 设置顺序。另外我假设重复的只是网址。输出链接在这里:http : //codepad.org/ClubESQ6
<?php
$res1 = array();
$res1[0] = array('id'=>null, 'title'=>'Owl - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/Owl', 'currentRank'=>0, 'newRank'=>null);
$res1[1] = array('id'=>null, 'title'=>'Owl (Marvel Comics) - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/Owl_(Marvel_Comics)', 'currentRank'=>1, 'newRank'=>null);
$res1[2] = array('id'=>null, 'title'=>'Owl Pharaoh - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/Owl_Pharaoh', 'currentRank'=>2, 'newRank'=>null);
$res1[3] = array('id'=>null, 'title'=>'Owl City - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/Owl_City', 'currentRank'=>3, 'newRank'=>null);
$res1[4] = array('id'=>null, 'title'=>'Owl (Nguyen Hung Cuong) | Happy Folding', 'urlLink'=>'https://www.happyfolding.com/gallery-nguyen-owl', 'currentRank'=>1, 'newRank'=>null);
//bing
$res2 = array();
$res2[0] = array('id'=>null, 'title'=>'OWL/TV - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/OWL/TV', 'currentRank'=>0, 'newRank'=>null);
$res2[1] = array('id'=>null, 'title'=>'Owl (Nguyen Hung Cuong) | Happy Folding', 'urlLink'=>'https://www.happyfolding.com/gallery-nguyen-owl', 'currentRank'=>1, 'newRank'=>null);
$res2[2] = array('id'=>null, 'title'=>'Owl Pharaoh - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/Owl_Pharaoh', 'currentRank'=>2, 'newRank'=>null);
$res2[3] = array('id'=>null, 'title'=>'Owl "Nightwatch" (Kay Kraschewski a.k.a. "Akugami ...', 'urlLink'=>'https://www.happyfolding.com/instructions-kraschewski-nightwatch', 'currentRank'=>3, 'newRank'=>null);
$res2[4] = array('id'=>null, 'title'=>'Owl - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/Owl', 'currentRank'=>0, 'newRank'=>null);
//duckduckgo
$res3 = array();
$res3[0] = array('id'=>null, 'title'=>'OWL // Purdue Writing Lab', 'urlLink'=>'https://owl.purdue.edu', 'currentRank'=>0, 'newRank'=>null);
$res3[1] = array('id'=>null, 'title'=>'Owl - Wikipedia', 'urlLink'=>'https://en.wikipedia.org/wiki/Owl', 'currentRank'=>1, 'newRank'=>null);
$res3[2] = array('id'=>null, 'title'=>'Owl | bird | Britannica.com', 'urlLink'=>'https://www.britannica.com/animal/owl', 'currentRank'=>2, 'newRank'=>null);
$res3[3] = array('id'=>null, 'title'=>'The Owl Pages - Information about Owls', 'urlLink'=>'https://www.owlpages.com/owls/', 'currentRank'=>3, 'newRank'=>null);
$results = mergeResults($res1, $res2, $res3);
echo '<pre>', print_r($results, true), '</pre>';
function mergeResults() {
$results = array(); //array for our final resulsts
$numargs = func_num_args();
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
$resultSet = $arg_list[$i];
foreach($resultSet as $rs) {
//is dupe, decrement rank
if (isset($results[$rs['urlLink']])) {
$currentRank = $results[$rs['urlLink']]['newRank'];
$newRank = $currentRank - 1;
$results[$rs['urlLink']]['newRank'] = $newRank;
} else {
$rs['newRank'] = $rs['currentRank'];
$results[$rs['urlLink']] = $rs;
}
}
}
usort($results, "sortByRank");
return $results;
}
function sortByRank($a, $b) {
if($a["newRank"] == $b["newRank"]) {
return 0;
}
return ($a["newRank"] < $b["newRank"]) ? -1 : 1;
}
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报