usort()警告虽然提交数组

时间:2012-05-10 21:56:18

标签: php sorting usort

为什么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 );
}

1 个答案:

答案 0 :(得分:3)

请注意,错误为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";
}