How can I sort an array by a key in PHP?
本问题已经有最佳答案,请猛点这里访问。
我有一个带一串钥匙的阵列。我想按它们的值对其中一个键进行排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Array ( [0] => stdClass Object ( [id] => 1 [question] => Action [specific_to_movie_id] => 1 [total_yes] => 4 ) [1] => stdClass Object ( [id] => 2 [question] => Created by DC Comics [specific_to_movie_id] => 1 [total_yes] => 1 ) [2] => stdClass Object ( [id] => 3 [question] => Christian Bale [specific_to_movie_id] => 1 [total_yes] => 1 ) ) |
数组如上图所示,我想按"total"排序。
如何在PHP中执行此操作?
因为它比标准数组排序稍微复杂一点,所以需要使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | function compare_items( $a, $b ) { return $a->total_yes < $b->total_yes; } $arrayToSort = array ( (object) array( 'id' => 1, 'question' => 'Action', 'specific_to_movie_id' => 1, 'total_yes' => 4 ), (object) array( 'id' => 2, 'question' => 'Created by DC Comics', 'specific_to_movie_id' => 1, 'total_yes' => 1 ), (object) array( 'id' => 3, 'question' => 'Christian Bale', 'specific_to_movie_id' => 1, 'total_yes' => 1 ) ); usort($arrayToSort,"compare_items"); |
如果要颠倒排序顺序,只需将
您可以使用usort,例如:
1 2 3 4 5 |
可以使用使用特定compere函数的usort():
定义和用法
0句法
usort(array,myfunction);
数组-必需。指定要排序的数组
MyFunction可选。定义可调用比较函数的字符串。如果第一个参数小于、等于或大于第二个参数,则comparison函数必须返回一个小于、等于或大于0的整数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php function cmp($a, $b) { if ($a->total_yes == $b->total_yes) { return 0; } return ($a->total_yes < $b->total_yes) ? -1 : 1; } usort($array,"cmp"); ?> |
您有对象,因此需要使用[usort()][http://www.php.net/manual/en/function.usort.php]
2