按特定级别索引重新排列数组顺序

时间:2015-05-19 15:06:26

标签: php arrays

我一直在搜索这个,但在任何地方找不到任何解决方案。我想用特定的索引重新命令我的数组。

像这样:

$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',
    ),
);

看到数组是按每个项目的“得分”索引重新排列的。这里有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

在我建议使用uasort功能的地方扩展我的评论,这是一个工作示例:http://codepad.org/fBSqHNCC

答案 1 :(得分:1)

与评论中的mishu提及一样,您可以使用uasort - 函数

示例:

$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 );