PHP 5.2 GENERIC排序FOLLOWUP所需的功能

时间:2010-05-24 19:38:37

标签: php sorting multidimensional-array

好的,你们给了我一个很好的解决方案,用于上周五对记录集数组进行排序。 (PHP 5.2 Function needed for GENERIC sorting of a recordset array

但是现在当我实现它时,我最终在记录集数组中添加了一个额外的元素。我不会浪费空间重新发布相同的信息,因为链接在上面。但最重要的是,当我对5个记录的数组进行排序时,结果数组有6个记录。数组中的最后一个元素不是记录数组,而只是一个包含整数值1的元素。我假设它以某种方式获取“strnatcasecmp”函数的输出值,但我不知道它是如何发生的。

以下是您上周提供的功能:

function getSortCommand($field, $sortfunc) {
    return create_function('$var1, $var2', 'return '.$sortfunc.'($var1["'.$field.'"], $var2["' .$field .'"]);');
}

这是我打算对数组进行排序的行:

$trek[] = usort($trek, getSortCommand('name', 'strnatcasecmp'));

这会产生以下输出,并在末尾附加一个额外的元素。

Array
(
[0] => Array
    (
        [name] => Kirk
        [shirt] => Gold
        [assign] => Bridge
    )

[1] => Array
    (
        [name] => McCoy
        [shirt] => Blue
        [assign] => Sick Bay
    )

[2] => Array
    (
        [name] => Scotty
        [shirt] => Red
        [assign] => Engineering
    )

[3] => Array
    (
        [name] => Spock
        [shirt] => Blue
        [assign] => Bridge
    )

[4] => Array
    (
        [name] => Uhura
        [shirt] => Red
        [assign] => Bridge
    )

[5] => 1
)

1 个答案:

答案 0 :(得分:1)

只做

usort($trek, getSortCommand('name', 'strnatcasecmp'));

usort()返回一个布尔值,指示它是否已成功执行(它对元素进行了排序):

  

返回值

     

成功时返回TRUE,失败时返回FALSE。

通过执行$trek[] = usort(...),可以将函数的结果附加到数组中。