我试过了,尝试过,我只是不知道如何对数组进行排序。我已经按照无数的教程试着让它排序,但我不认为它的工作(至少不是我希望它的方式)。
我试图制作一个高分表,按分数($ totalMoney)从最高到最低列出玩家($玩家)。
foreach ( $myposts as $post ) : setup_postdata( $post );
$player = get_the_author_meta('display_name');
$cash = get_the_author_meta('cashOnHand');
$bank = get_the_author_meta('bankAccount');
$totalMoney = $cash + $bank;
$highScores = array($player => $totalMoney);
asort($highScores);
foreach($highScores as $key => $value)
print_r($highScores);
endforeach;
结果始终是一个数组,似乎按“玩家”字段排序,而不是“分数”字段。但无论我做什么,我都无法通过阵列的“得分”字段进行排序。
print_r():
Array ( [player3] => 2500 ) Array ( [player2] => 6485 ) Array ( [sd] => 3515 )
你可以看到数组没有按分数排序(我认为它按玩家名称排序)。
如何按播放器键的值排序?
PS:我尝试了各种各样的排序:asort,arsort,ksort,krsort,但它总是相同的结果(见上面的print_r()。答案 0 :(得分:3)
我认为你在代码中通过在循环的每次迭代中重置高分数组而犯了一个错误。
请参阅以下内容:
$highScores = array(); // initialize the array
foreach ( $myposts as $post ) :
setup_postdata( $post );
$player = get_the_author_meta('display_name');
$cash = get_the_author_meta('cashOnHand');
$bank = get_the_author_meta('bankAccount');
$totalMoney = $cash + $bank;
$highScores[$player] = $totalMoney; // add an entry to the array
endforeach;
asort($highScores); // sort the array
print_r($highScores); // see result