Php - 按键排序关联数组

时间:2015-09-23 10:25:58

标签: php arrays sorting multidimensional-array associative

我知道之前已经问过这个问题,但不是在这个背景下(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返回一个空数组,我不知道为什么..

任何人都可以帮我这个吗?

谢谢和问候!

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

答案 2 :(得分:1)

usort函数中,第二个参数包含两个值,一个是ClassName,另一个是functionName,因此您的第二个参数看起来像

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

在你的情况下,它会像

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

Demo