[英]uksort() function not working
我正在尝试使用自定义 function 对 PHP 中的数组进行排序,但它不起作用。 这是我正在使用的(简化的)代码:
class Test {
public function sortByVote($a, $b) {
$v1 = $a['voteCount'];
$v2 = $b['voteCount'];
if ($v1 > $v2) return +1;
if ($v1 < $v2) return -1;
return 0;
}
function test() {
$temp = array(
array("voteCount" => 1),
array("voteCount" => 4),
array("voteCount" => 9),
array("voteCount" => 2),
array("voteCount" => 3)
);
uksort($temp, array($this, "sortByVote"));
}
}
任何人都可以看到问题是什么?
您需要 usort()(用户按值排序),而不是 uksort()(用户按键排序) uksort 的回调接收 $temp 中元素的键 usort 的回调接收 $temp 中元素的值
这就是您可以使用usort以您想要的方式对该数组进行排序的方法。
class Test {
private $myArray = [];
public function __construct()
{
$this->myArray = [
array("voteCount" => 1),
array("voteCount" => 4),
array("voteCount" => 9),
array("voteCount" => 2),
array("voteCount" => 3)
];
}
private function sortByVote($a, $b)
{
return $a <=> $b;
}
public function myArray()
{
return $this->myArray;
}
public function mySort()
{
return usort($this->myArray, 'Test::sortByVote');
}
}
$t = new Test;
$t->mySort();
$result = $t->myArray();
结果:
Array
(
[0] => Array
(
[voteCount] => 1
)
[1] => Array
(
[voteCount] => 2
)
[2] => Array
(
[voteCount] => 3
)
[3] => Array
(
[voteCount] => 4
)
[4] => Array
(
[voteCount] => 9
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.