在下面的函数中,我看到按alpha排序数组。但是,它返回bool(true)而不是实际排序的数组。我错过了什么?
function get_dirs($dir) {
$array = array();
$d = dir($dir);
while (false !== ($entry = $d->read())){
if($entry!='.' && $entry!='..') {
$entry2 = $dir."/".$entry;
if(is_dir($entry2)) {
$array[] = $entry;
}
}
}
$d->close();
//return $array; THIS WORKS FINE BUT UNSORTED
return natcasesort($array); //THIS RETURNS A BOOLEAN?
}
答案 0 :(得分:3)
natcasesort
成功时返回TRUE,失败时返回FALSE。
更改
return natcasesort($array);
到
natcasesort($array);
return $array;
答案 1 :(得分:2)
是。正如手册所说:
成功时返回TRUE,失败时返回FALSE。
查看手册页中的功能签名:
bool natcasesort(array& $ array)
&
符号表示“引用”,因此修改了$array
,而不是返回新数组。这与所有(IIRC)PHP排序函数相同。
您应该进行排序,然后返回$array
:
natcasesort($array);
return $array;
答案 2 :(得分:1)
natcasesort对数组进行排序,并在成功时返回true,如果失败则返回false。通过对数组进行排序然后返回来解决它。
natcasesort($array);
return $array;