访问 usort() 的返回值时数组消失了[重复]

问题描述 投票:0回答:3

我知道这个问题之前已经被问过,但不是在这种情况下(OOP):

class XYZ {

    public function index() {

        $array = [
            [
                'id' => 1,
                'name' => 'Alpha'
            ],
            [
                'id' => 2,
                'name' => 'Beta'
            ],
            [
                'id' => 3,
                'name' => 'Gamma'
            ]
        ];

        $newArray = usort($array, 'modify');

        return $newArray;

    }

    public function modify($a, $b) {

        return $b['name'] - $a['name'];

    }

}

这个indexAction返回一个空数组,我不知道为什么。

php arrays sorting multidimensional-array associative
3个回答
3
投票

ksort — 按键对数组进行排序

bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

按键对数组进行排序,维护键与数据的相关性。这主要对关联数组有用。

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

上面的例子将输出:

a = 橙色 b = 香蕉 c = 苹果 d = 柠檬

了解更多信息:http://php.net/manual/en/function.ksort.php


1
投票

在您的

usort
函数中,第二个参数由两个值组成,第一个
ClassName
和另一个
functionName
所以您的第二个参数看起来像

usort($array,['ClassName','functionName']);

在你的情况下它会像

usort($array,['XYZ','modify']);

演示


1
投票

因为

usort
返回一个布尔值 http://php.net/manual/en/function.usort.php 。您想要返回修改后的变量
$array

© www.soinside.com 2019 - 2024. All rights reserved.