array 'label' => string 'abc' (length=3) 'weight' => f-6ren">
gpt4 book ai didi

PHP "Warning: usort() [function.usort]: Invalid comparison function"排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:52:38 29 4
gpt4 key购买 nike

我有以下数据作为关联数组

array
'abc' =>
array
'label' => string 'abc' (length=3)
'weight' => float 3
'wsx' =>
array
'label' => string 'wsx' (length=3)
'weight' => float 1
'qay' =>
array
'label' => string 'qay' (length=3)
'weight' => float 1
'http://test.com' =>
array
'label' => string 'http://test.com' (length=15)
'weight' => float 0
'Nasi1' =>
array
'label' => string 'Nasi1' (length=5)
'weight' => float 0
'fax' =>
array
'label' => string 'fax' (length=3)
'weight' => float 4

我想使用“标签”或“权重”对数组进行排序

标签的比较函数是:

function compare_label($a, $b)
{
return strnatcmp($a['label'], $b['label']);
}

而且我只是从另一个函数调用该函数:

usort($label, 'compare_label');
var_dump($label);

但随后我收到错误消息并且数组未排序。我不知道,我做错了什么。我试过替换:

  • usort($label, 'compare_label');usort($label, compare_label);
  • usort($label, 'compare_label');usort($label, $this->compare_label);

没有成功。有人可以给我提示吗?

最佳答案

如果 compare_label 是一个成员函数(即类方法),那么您需要以不同的方式传递它。

usort( $label, array( $this, 'compare_label' ) );

基本上,您发送一个双元素数组,而不是仅仅发送函数名称的字符串,其中第一个元素是上下文(可以在其上找到方法的对象),第二个元素是字符串函数名称。

注意:如果您的方法是静态的,那么您将类名作为数组的第一个元素传递

usort( $label, array( __CLASS__, 'compare_label' ) );

关于PHP "Warning: usort() [function.usort]: Invalid comparison function"排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1229324/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com