如何在Zend Action Helper(或类中)中使用uasort()?

时间:2011-12-10 16:50:46

标签: php zend-framework sorting

我想使用uasort()函数对数组进行排序。我写了这段代码,效果很好:

    function cmp($a, $b)
    {
        $_a = strlen($a);
        $_b = strlen($b);
        if($_a==$_b)
        {
            return 0;
        }

        return ($_a < $_b)? -1 : +1;
    }

    $arr = array(
            "234560"=>"the quick brown fox jump",
            "234561"=>"the quick brown fox jump over the lazy dog",
            "234562"=>"the quick brown"
        );

    $array = uasort($arr,"cmp");

但是当我把它放在一个类中时,它会返回null并带有警告:

Warning: uasort() expects parameter 2 to be a valid callback, function 'cmp' not found or invalid function name in...

这是我的代码

class Zend_Controller_Action_Helper_Utility extends Zend_Controller_Action_Helper_Abstract
{

    public function uasort($array)
    {
        return uasort($array, "cmp");
    }

    function cmp($a, $b)
    {
        $_a = strlen($a);
        $_b = strlen($b);
        if ($_a == $_b)
        {
            return 0;
        }

        return ($_a < $_b) ? -1 : +1;
    }

}

我也试试

return uasort($array, "Zend_Controller_Action_Helper_Utility::cmp");

static function cmp(){}但我仍然返回null。

我该如何解决?

1 个答案:

答案 0 :(得分:4)

您指定的回调错误。如果是实例方法,则需要将其指定为

array($this, 'cmp');

如果您将其设为静态方法,则需要将其指定为

array('Zend_Controller_Action_Helper_Utility', 'cmp');

有关详细信息,请参阅documentation of callback