Php 按键值对数组排序,然后获得数组中的5个最高值和最低值
我有一个名为“PlayerArray”的数组,看起来像这样:Php 按键值对数组排序,然后获得数组中的5个最高值和最低值,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我有一个名为“PlayerArray”的数组,看起来像这样: Array ( [0] => Array ( [name] => Joe [holders] => 0 ) [1] => Array ( [name] => Bob [holders] => 100 ) [2] => Array ( [name] => Jake [holders] => 100 ) [3] => Array ( [name]
Array (
[0] => Array ( [name] => Joe [holders] => 0 )
[1] => Array ( [name] => Bob [holders] => 100 )
[2] => Array ( [name] => Jake [holders] => 100 )
[3] => Array ( [name] => Mike [holders] => 100 )
[4] => Array ( [name] => Tim [holders] => -0.0145 )
[5] => Array ( [name] => Frank[holders] => 100 )
[6] => Array ( [name] => Scott [holders] => 0.0583 )
[7] => Array ( [name] => Doug[holders] => 0.1308 )
[8] => Array ( [name] => Tommy [holders] => 0.2516 )
[9] => Array ( [name] => Eric [holders] => 100 )
)
我有一个按“holders”值对数组排序的函数:
我正在尝试按“holder”值对数组进行排序:
最后,我尝试在新排序的数组中获取5个最高和5个最低的“holder”值:
$first_5_players = array_slice($playersArray, 0, 5, true);
$last_5_players = array_slice($playersArray, -5);
但是,排序工作不正常。到期值未按所需顺序显示。如何使分拣正常工作?谢谢大家! 实际上,您没有在
compareHolders()
中比较这两个值,因为您没有声明$aPpoints
和$bPoints
这应该起作用:
function compareHolders($a, $b) {
$aPoints = $a['holders'];
$bPoints = $b['holders'];
return strcmp($aPoints, $bPoints);
}
或者,您也可以返回:
return strcmp($a['holders'], $b['holders']);
然后您可以去掉strcmp(),因为您没有比较字符串。您实际上没有比较
compareHolders()
中的两个值,因为您没有声明$aPpoints
和$bPoints
这应该起作用:
function compareHolders($a, $b) {
$aPoints = $a['holders'];
$bPoints = $b['holders'];
return strcmp($aPoints, $bPoints);
}
或者,您也可以返回:
return strcmp($a['holders'], $b['holders']);
然后您可以去掉strcmp(),因为您没有比较字符串。您的排序函数
比较持有者
不正确<代码>$aPoints和$bPoints
未定义。由于holders
键的值是数字,因此可以使用比较运算符。尝试执行以下操作:
function compareHolders($a, $b) {
if ($a['holders'] == $b['holders']) {
// return 0 if equal
return 0;
}
return ($a['holders'] > $b['holders']) ? -1 : 1;
}
您的排序功能
比较器不正确<代码>$aPoints
和$bPoints
未定义。由于holders
键的值是数字,因此可以使用比较运算符。尝试执行以下操作:
function compareHolders($a, $b) {
if ($a['holders'] == $b['holders']) {
// return 0 if equal
return 0;
}
return ($a['holders'] > $b['holders']) ? -1 : 1;
}
这是对浮点进行排序的正确方法,使用字符串比较是非常错误的。这是对浮点进行排序的正确方法,使用字符串比较是非常错误的