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