2015-05-19 159 views
0

我一直在寻找这个,但没有在任何地方找到任何解决方案。我想重新命令我的数组与特定的索引。按特定级别索引重新排列数组顺序

像这样:

$scoreboard = array(
    'foo' => array(
     'score' => 580, 
     'game' => 'google', 
    ), 
    'bar' => array(
     'score' => 1385, 
     'game' => 'facebook', 
    ), 
    'car' => array(
     'score' => 750, 
     'game' => 'tweet', 
    ), 
); 

和输出应该是这样的:

$scoreboard = array(
    'bar' => array(
     'score' => 1385, 
     'game' => 'facebook', 
    ), 
    'car' => array(
     'score' => 750, 
     'game' => 'tweet', 
    ), 
    'foo' => array(
     'score' => 580, 
     'game' => 'google', 
    ), 
); 

见该阵列重新排列与每个项目的“得分”指标。这里有帮助吗?

+0

请问http://php.net/manual/en/function.ksort.php没有做你所需要的吗? – gabe3886

+0

您可以使用http://php.net/uasort并根据您在“分数”键下找到的内容,编写自定义回调来比较两个元素(它们是阵列本身) – mishu

+0

这个问题中downvote的含义是什么?我真的不明白这个社区。 -_- –

回答

1

像秘书科提到的评论,你可以使用uasort -function

例子:

$scoreboard = array(
    'foo' => array(
     'score' => 580, 
     'game' => 'google', 
    ), 
    'bar' => array(
     'score' => 1385, 
     'game' => 'facebook', 
    ), 
    'car' => array(
     'score' => 750, 
     'game' => 'tweet', 
    ), 
); 

function arrayCompareScore($a, $b) { 
    if ($a['score'] == $b['score']) { 
     return 0; 
    } 
    return ($a['score'] > $b['score']) ? -1 : 1; 
} 

uasort($scoreboard, 'arrayCompareScore'); 
print_r($scoreboard);