Php Friends highscore:合并两个数组
我正在Facebook上开发一款游戏,希望向用户展示一个好友高分。 最有效的方法是什么 我有两个阵列: 第一个,来自我的数据库的,Php Friends highscore:合并两个数组,php,arrays,facebook,multidimensional-array,Php,Arrays,Facebook,Multidimensional Array,我正在Facebook上开发一款游戏,希望向用户展示一个好友高分。 最有效的方法是什么 我有两个阵列: 第一个,来自我的数据库的,$all,保存了玩游戏的所有用户的fbid和分数: Array ( [0] => Array ( [uid] => 12345 [score] => 0 [endgame] => 1404316845 ) [1] =>
$all
,保存了玩游戏的所有用户的fbid和分数:
Array
(
[0] => Array
(
[uid] => 12345
[score] => 0
[endgame] => 1404316845
)
[1] => Array
(
[uid] => 112873
[score] => 0
[endgame] => 1404334512
)
...
)
第二个是来自Facebook的$friends
,包含用户的所有好友:
Array
(
[0] => Array
(
[uid] => 12345
[name] => Some Name
[pic_square] => https://...
)
[1] => Array
(
[uid] => 43324324
[name] => Another Name
[pic_square] => https://...
)
[2] => Array
(
[uid] => 4893424242
[name] => Yet Another
[pic_square] => https://...
)
...
)
我认为这里首选的方法是生成一个新数组,其中只包含玩过游戏并有分数的朋友,如下所示:
Array
(
[0] => Array
(
[uid] => 12345
[name] => Some Name
[pic_square] => https://...
[score] => 0
[endgame] => 1404316845
)
...
)
我用数组中的
尝试了各种方法,但都做不好。。。有谁能帮我吗?为分数创建一个新数组,该数组由uid
索引
$indexedScores = [];
foreach($all as $score) {
$indexedScores[$score['uid']] = $score['score'];
}
然后循环浏览friends数组并通过查找$indexedScores
foreach($friends as $key => &$friend) {
if(isset($indexedScores[$friend['uid']])) {
$friend['score'] = $indexedScores[$friend['uid']];
}
else {
unset($friends[$key]); //doesn't have a score, so remove
}
}
usort($friends, function($a, $b) {
return $a['score'] > $b['score'];
});
我不明白你所说的“然后遍历friends数组并通过查找$IndexedCores设置分数”和下面的代码是什么意思。。。我试过你的代码,但没用。请你再解释一下好吗?@望远镜再试一次,我引用的是$scores
而不是$indexedScores
-$indexedScores
是一个关联数组,其中键是uid,所以你可以使用isset
查看给定uid是否有分数,就像一个符咒一样工作。。。现在我需要做的就是重新排列数组,这样分数就会下降。。。我已经读过有关arsort()
的内容,但这如何处理多维数组?知道如何将endgame添加到新数组中(请参阅更新),然后根据分数对整个数组进行排序,然后再对endgame进行排序吗?(如果两名玩家得分相同,则得分第一的玩家(=终局)的排名应高于另一名)