根据数据库中的评分结果进行PHP数组排序
我有一个数组,我只是试图通过一个根据数据库中的评分结果进行PHP数组排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个数组,我只是试图通过一个score键来排序,该键包含我试图排序的值。所需结果将更改以下数组的顺序,以便按以下顺序显示索引:[0],[2],[1] 我正在循环浏览从数据库中提取的结果。我正在创建一个名为score的键,然后将$row2数组推到一个单独的数组中,因为如果我使用mysql\u data\u seek它会去掉score键 它还在底部创建一个不需要的键score 我如何才能最好地清理这个,并确保结果按预期从高到低排列 $my_array = array(); while ($ro
score
键来排序,该键包含我试图排序的值。所需结果将更改以下数组的顺序,以便按以下顺序显示索引:[0]
,[2]
,[1]
我正在循环浏览从数据库中提取的结果。我正在创建一个名为score
的键,然后将$row2
数组推到一个单独的数组中,因为如果我使用mysql\u data\u seek
它会去掉score
键
它还在底部创建一个不需要的键score
我如何才能最好地清理这个,并确保结果按预期从高到低排列
$my_array = array();
while ($row2 = mysql_fetch_assoc($result2))
{
//score determined here
//$row2['score'] = ...more math, variable is numeric, not a string
array_push($array_page,$row2);
}
当前不期望的结果
Array
(
[0] => Array
(
[score] => 7
)
[1] => Array
(
[score] => 2
)
[2] => Array
(
[score] => 4
)
[score] =>
)
Array
(
[0] => Array
(
[score] => 7
)
[2] => Array
(
[score] => 4
)
[1] => Array
(
[score] => 2
)
)
期望的结果
Array
(
[0] => Array
(
[score] => 7
)
[1] => Array
(
[score] => 2
)
[2] => Array
(
[score] => 4
)
[score] =>
)
Array
(
[0] => Array
(
[score] => 7
)
[2] => Array
(
[score] => 4
)
[1] => Array
(
[score] => 2
)
)
在php>5.3上,可以使用内联function:
usort(&$myArray, function($a,$b){ /* ... */ });
在查询中使用
orderbyscore
。我不会在SQL查询中处理分数。。。但是您使用SQL查询获得分数,对吗?让数据库为您完成所有工作。不,这些都是由PHP处理的。即使我可以用MySQL实现这一点,我也会从MySQL迁移到PostgreSQL,以避免处理Oracle的政治问题,因此我最不想做的事情就是创建过于复杂的SQL语句。要在排序时维护键,请使用“uksort”这看起来几乎足够好,我只能接受它的排序方式相反,最重的分数在底部,而不是在我需要它们的顶部。我可以反转数组,但是有没有更简单的函数修改我可以使用?我尝试了将减号运算符更改为加号这一更明显的部分,尽管这不起作用只需替换“:D”