日期:2014-05-17  浏览次数:20399 次

用户自定义排序数组问题
PHP code
<?PHP 
$number = array(array('tir','tire','100'),
                array('Oil','oil','50'),
                array('spk','spark','10'));
                
function compare($x,$y){
                if($x[1]==$y[1]){
                
                return 0;}
                else if($x[1]<$y[1]){
                return -1;
                }
                else{
                
                return 1;}
                }
usort($number,'compare');
print_r($number);
?>
        


那个function函数是什么意思 看不懂 哪些返回值是怎么回事 原理究竟是什么 请高手详细讲解一下 小弟刚学PHP

------解决方案--------------------
我的理解,lz可以参考下我下面的例子,希望对你有所帮助
PHP code

$number = array(
        array('tir1','tire2','100'),
                array('Oil1','oil2','50'),
                array('spk1','spark2','10')
                
     );
                    
function compare($x,$y){
    if($x[1]==$y[1]){
         return 0;
     } else if($x[1]<$y[1]){
                //可以输出来看一下
        //var_dump($x[1]);  
        //var_dump($y[1]);
        //echo 22;
        return -1;
        
    }else{
        return 1;
        
    }
}
//echo '<pre>';
usort($number,'compare');
print_r($number);


// 函数compare 是比较函数 ,  也就是把$number数组值代入compare这个函数中进行比较,根据比较的结果,重新排序这个$number数组的内部值

//首先比较的是$x[1]==$y[1]//也就是oil2 跟 tire2 进行比较 ,显然他们的值不一样,于是进行$x[1]<$y[1] 比较,明显oil2 与tire2 //oil的首字线在tire的首字母前,显然返回-1,也就是要把array('Oil1','oil2','50')排在array('tir1','tire2','100')前,接着是spark2与tire2进行比较,同理,结果返回-1,也就是要把 array('spk1','spark2','10') 排在array('tir1','tire2','100')前,最终$number中的排序为 $number = array(array('Oil1','oil2','50') ,array('spk1','spark2','10'),array('tir1','tire2','100') );