echo '<pre>';
function my_sort($a, $b)
{
if ($a == $b) return 0;
var_dump($a);var_dump($b);echo '<br />';
return ($a > $b) ? -1 : 1;
}
$arr = array("Peter", "glenn","Cleveland","peter","cleveland", "Glenn");usort($arr, "my_sort");print_r ($arr);
1.我不明白 $a和$b都是字母,所以return ($a > $b) ? -1 : 1; 这个之间的比较,我不明白字母之间如果比大小
2.$a $b他们各种代表着什么
function my_sort($a, $b)
{
if ($a == $b) return 0;
var_dump($a);var_dump($b);echo '<br />';
return ($a > $b) ? -1 : 1;
}
$arr = array("Peter", "glenn","Cleveland","peter","cleveland", "Glenn");usort($arr, "my_sort");print_r ($arr);
1.我不明白 $a和$b都是字母,所以return ($a > $b) ? -1 : 1; 这个之间的比较,我不明白字母之间如果比大小
2.$a $b他们各种代表着什么
PHP里字符串的比较直接用不等号就可以了,如果要忽略大小写还是需要用到strcasecmp,C语言里是这么拼的,自己查查
2、你多少应该学了一点算法,现在高中的计算机课里不也有排序的冒泡算法吗?
无论如何,既然是排序,就有个比较大小的问题,那个$a $b就是算法需要比较大小的两个值
for(j=$i+1; $j<count($ar); $j++) {
if($ar[$i] > $ar[$j]) {
swap($ar[$i], $ar[$j]);
}
}
}其中 if($ar[$i] > $ar[$j]) 不就是要比较大小吗?
那个 $a $b 就是这里的 $ar[$i] $ar[$j]排序有很多种方式,冒泡排序只是最基本的一种。
至于 usort 内部采用什么排序方法,这就不需要深究了。总之,他每当需要比较大小时,就调用你给他的函数
$arr = array("Peter"=>array('a0'=>'a','a1'=>'3'),"glenn"=>array('b0'=>'a','b1'=>'1'),"Cleveland"=>array('c0'=>'a','c1'=>'2'));
这样一个数组 我希望能够按照里面那个3, 1, 2 进行从小到大的进行重新排序,能够办到吗?
"Peter"=>array('a0'=>'a','a1'=>'3'),
"glenn"=>array('b0'=>'a','b1'=>'1'),
"Cleveland"=>array('c0'=>'a','c1'=>'2')
);function my_sort($a, $b) {
return strcasecmp(end($a), end($b));
}uasort($arr, "my_sort");print_r ($arr);Array
(
[glenn] => Array
(
[b0] => a
[b1] => 1
) [Cleveland] => Array
(
[c0] => a
[c1] => 2
) [Peter] => Array
(
[a0] => a
[a1] => 3
))