我是一个php新手,我正在为我的flash游戏创建一个Facebook应用程序。 在应用程序的主页面中,我想打印按分数排序的当前用户朋友。
我使用此API函数的第一个用户朋友使用我的应用程序:
<?php $friends = $facebook->api_client->friends_getAppUsers();?>
$ friends是一个包含所有用户朋友ID的数组,每个ID都是一个bigint。
之后我创建另一个数组来存储在Friends ID的+分数中:
<?php
foreach( $friends as $friend )
{
$fscores["$friend"] = get_user_bestscore($friend);
}
?>
get_user_bestscore($朋友);功能从我的DB获得分数。
我对数组进行排序,以显示按分数排序的朋友:
<?php sort($fscores); ?>
在最后一步显示$ fscores数组以显示来自ID的朋友姓名,以及我使用的分数:
<?php
foreach( $fscores as $fid => $score )
{
echo '<P>';
echo '<fb:profile-pic uid="'.$fid.'" linked="true" /><br>';
echo '<b># '.$counter++.'</b>';
echo '<b>- <fb:name uid="'.$fid.'" useyou="false"/></b><br>';
echo '<b>Score : '.$score.'</b>';
echo '</P>';
}
?>
$ score var显示从DB到数组正确存储的分数,但$ fid(Facebook Friend ID)显示ex:0
我使用print_r来了解我找到的$ scores数组内容: 数组([0] =&gt; 5.87)
在我找到的第一个$ friends数组中:
Array ( [0] => 100000625691889 )
我想得到的是:
Array ( [100000625691889 ] => 5.87)
请解决任何问题,
提前致谢。
答案 0 :(得分:6)
sort()
函数将删除您的密钥和自动索引。
http://www.php.net/manual/en/function.sort.php
注意:此功能指定新密钥 到数组中的元素。它会 删除任何可能存在的现有密钥 被分配,而不仅仅是 重新排序密钥。
您可以使用asort()
对数组进行排序并保留密钥。
答案 1 :(得分:5)
我不是100%确定我理解你的问题。看起来你有一个如下所示的数组:
100000625691889 => 5.87
你丢失了钥匙。如果是这样,那是因为你正在使用sort()
,它不保留数组索引。如果要保留数组键,请改用asort()
。
注意:我不是指按键排序(除非那是你想要的)。按键排序由ksort()
完成。让我用一些例子来澄清这一点:
$arr = array(1234 => 5, 5678 => 3, 3456 => 11);
sort($arr);
print_r($arr);
$arr = array(1234 => 5, 5678 => 3, 3456 => 11);
asort($arr);
print_r($arr);
$arr = array(1234 => 5, 5678 => 3, 3456 => 11);
ksort($arr);
print_r($arr);
按值排序(sort()
):
Array
(
[0] => 3
[1] => 5
[2] => 11
)
按值保留键(asort()
)进行排序:
Array
(
[5678] => 3
[1234] => 5
[3456] => 11
)
按键排序(ksort()
):
Array
(
[1234] => 5
[3456] => 11
[5678] => 3
)