Как использовать uasort () в Zend Action Helper (или в классе)? - PullRequest
2 голосов
/ 10 декабря 2011

Я хочу отсортировать массив с помощью функции 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");

Но когда я помещаю его в класс, он возвращает ноль с предупреждением:

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(){}, но я все еще возвращаю ноль.

Как я могу это исправить?

1 Ответ

4 голосов
/ 10 декабря 2011

Вы неправильно указали обратный вызов.Если это метод экземпляра, вам нужно указать его как

array($this, 'cmp');

Если вы сделаете его статическим методом, вам нужно указать его как

array('Zend_Controller_Action_Helper_Utility', 'cmp');

См. документация обратного вызова для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...