usort($this->array,"$this->compare"); 
改为
usort($this->array, array($this, "compare")); 可以写做这样
class sort2 {
    
    var $array;    //二维数组
    var $index;    //排序列数
        
    /*初始化*/
    function sort2($array,$index=1) {
        $this->array=$array;
        $this->index=$index;
        usort($this->array,array($this, "compare")); //若是php4,则写做 array(&$this, "compare")
    }
    
    /*比较一维数组大小*/
    function compare($a,$b)
    {
        $aa=$this->value($a,$this->index);
        $bb=$this->value($b,$this->index);
        return $aa-$bb;
    }
    
    /*一维数组取值*/
    function value($a,$index)
    {
        return $a[$index]; //注意这里的改动
    }
    
    /*返回整个数组*/
    function get_array()
    {
        return $this->array;
    }
    
}    php已经提供了很好的排序函数,为什么不用呢?$index = 1;
foreach($a as $r) {
  $t[] = $r[$index];
}
array_multisort($t, $a);
print_r($a); 

解决方案 »

  1.   

    学习了
    手册上的例子,也不太明白例子 3. 使用对象的成员函数的 usort() 例子 <?php
    class TestObj {
        var $name;    function TestObj($name)
        {
            $this->name = $name;
        }    /* This is the static comparing function: */
        function cmp_obj($a, $b)
        {
            $al = strtolower($a->name);
            $bl = strtolower($b->name);
            if ($al == $bl) {
                return 0;
            }
            return ($al > $bl) ? +1 : -1;
        }
    }$a[] = new TestObj("c");
    $a[] = new TestObj("b");
    $a[] = new TestObj("d");usort($a, array("TestObj", "cmp_obj"));foreach ($a as $item) {
        echo $item->name . "\n";
    }
    ?>  上例将输出:b
    c
    d
     
      

  2.   

    <?
    class obj {
    function obj(){}
    function obj1(){}
    }
    print_r(get_class_methods('obj'));
    ?>