我想使用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。
我该如何解决?
答案 0 :(得分:4)
您指定的回调错误。如果是实例方法,则需要将其指定为
array($this, 'cmp');
如果您将其设为静态方法,则需要将其指定为
array('Zend_Controller_Action_Helper_Utility', 'cmp');
有关详细信息,请参阅documentation of callback。