usort函数使用中的问题?
代码如下:
<?php
function cmp($a,$b){
if ($a==$b)return0;
else return($a>$b)?-1:1;
}
$a=array(3,2,5,6,1);
usort($a,cmp);
while(list($key,$value)=each($a)){
echo "$key:$value<br>";
}
?>调试结果:
Notice: Use of undefined constant cmp - assumed 'cmp' in D:\wwwroot\text\1.php on line 7
0: 6
1: 5
2: 3
3: 2
4: 1
我英文太差了,看不懂他的NOTICE。不过我在line 7前加了@就不会出现
Notice: Use of undefined constant cmp - assumed 'cmp' in D:\wwwroot\text\1.php on line 7
请问这个问题如何彻底解决。。
该程序的第二个问题:
function cmp($a,$b){
if ($a==$b)return0;
else return($a>$b)?-1:1;
}
$a=array(3,2,5,6,1);
usort($a,cmp);
$b是怎么来的??
问题点数:20、回复次数:1Top
1 楼xuzuning(唠叨)回复于 2003-12-02 15:40:26 得分 20
1、cmd函数中书写错误,造成定义失败
function cmp($a,$b){
if ($a==$b)return 0;
else return $a>$b?-1:1;
}
2、假定usort采用“冒泡法”排序,实际应该是更高效的算法
则
$ar = array(3,2,5,6,1);
for($i=0;$i<count($ar)-1;$i++)
for($j=$i+1;$j<count($ar);$j++) {
// 注意这里
if(cmd($ar[$i],$ar[$j]) > 0) {
$c = $ar[$i];
$ar[$i] = $ar[$j];
$ar[$j] = $c;
}
}
无论函数内部采用何种算法,交换元素都需要一个条件
Top




