PHP:数组问题

时间:2010-08-31 01:15:01

标签: php arrays arraylist facebook

我是一个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)

请解决任何问题,

提前致谢。

2 个答案:

答案 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
)