natcasesort($ array)返回boolean而不是array?

时间:2011-11-22 15:55:21

标签: php arrays

在下面的函数中,我看到按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?
    }

3 个答案:

答案 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;