我在尝试对数组进行排序时遇到问题 - 我希望所有IsOpen = 1出现在顶部?
示例:
Array
(
[0] => Array
(
[Isopen] => 0
)
[2] => Array
(
[Isopen] => 1
)
[3] => Array
(
[Isopen] => 0
)
[4] => Array
(
[Isopen] => 1
)
代码:
function cmp($a, $b) {
if ($a['Isopen'] >= $b['Isopen']) {
return 0;
}
}
usort($data['rowResult'], "cmp");
我不明白$ a和$ b是什么意思,我看了一下PHP文档 - 信息不清楚。
答案 0 :(得分:3)
$ a和$ b是要比较的元素:
function cmp($a, $b) {
if ($a['Isopen'] == $b['Isopen']) {
return 0;
}
return ($a['Isopen'] > $b['Isopen']) ? -1 : 1;
}
答案 1 :(得分:1)
cmp函数应返回0,-1(或小于零)或1(或大于零)。
用于比较这两个值你可以使用php函数strcmp
function cmp($a, $b) {
return strcmp($a['Isopen'], $b['Isopen']);
}
答案 2 :(得分:1)
function cmp($a, $b) {
if ($a['Isopen'] == $b['Isopen']) {
return 0;
}
return ($a['Isopen'] > $b['Isopen']) ? -1 : 1;
}
这会使数组末尾的Isopen = 1,如果你想在乞讨时做这个
function cmp($a, $b) {
if ($a['Isopen'] == $b['Isopen']) {
return 0;
}
return ($a['Isopen'] < $b['Isopen']) ? -1 : 1;
}
答案 3 :(得分:0)
在这个例子中,$ a []和$ b []是两个传递给名为'cmp'的函数的数组。它比较了两个不同数组中'Isopen'的值。
查看有关用户定义函数的文档 http://php.net/manual/en/language.functions.php
以及如何正确使用usort() http://php.net/manual/en/function.usort.php
答案 4 :(得分:0)
排序算法是Bubble Sort。
基本上,它一次比较数组实体以确定它们的排序。要查看分步示例,请参阅http://en.wikipedia.org/wiki/Bubble_sort#Step-by-step_example
答案 5 :(得分:0)
您的函数 cmp 不正确(请参阅我的正确使用示例)。此外,如果你使用php 5.3+,你可以使用这样的匿名函数:
usort($data['rowResult'], function($a, $b)
{
if ($a['Isopen'] == $b['Isopen'])
{
return 0;
}
return $a['Isopen'] < $b['Isopen'] ? -1 : 1;
});