【问题标题】:usort() warning although submitting arrayusort() 警告虽然提交数组
【发布时间】:2012-05-10 21:56:18
【问题描述】:

usort() 为什么不对数组进行排序?

if ( is_array( $tables ) ) {
    usort( $tables, 'sort' );
} else {
    echo "no array";
}

我总是收到这个警告:

sort() 期望参数 1 是数组,给定字符串

所以 php 认为它是一个数组,但 usort() 不是

排序函数如下:

function sort( $a, $b ) {
    return strlen( $b ) - strlen( $a );
}

【问题讨论】:

  • 你能为我们做var_dump( $tables )吗?
  • 如何定义一个名为“sort”的函数?

标签: php sorting usort


【解决方案1】:

注意错误是sort() expects,而不是usort() expects。那是因为 PHP 将 usort 的回调解释为内置的 sort() 方法(它期望第一个参数是一个数组),而不是你的 sort() 方法。

尝试将您的方法重命名为其他名称,例如 my_sort。

function my_sort( $a, $b ) {
    return strlen( $b ) - strlen( $a );
}

if ( is_array( $tables ) ) {
    usort( $tables, 'my_sort' );
} else {
    echo "no array";
}

【讨论】:

  • 我花了一段时间才注意到这一点。
猜你喜欢
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2022-10-02
相关资源
最近更新 更多