Php - 按键排序关联数组
Php - Sort associative array by key
我知道以前有人问过这个问题,但不是在这种情况下 (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 returns 一个空数组,我不确定为什么..
有人可以帮我解决这个问题吗?
谢谢和问候!
因为 usort
return 是一个布尔值 http://php.net/manual/en/function.usort.php 。你要return修改变量$array
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 = 柠檬
在你的 usort
函数中,第二个参数由两个值组成,第一个 ClassName
和另一个 functionName
所以你的第二个参数看起来像
usort($array,['ClassName','functionName']);
在你的情况下它会像
usort($array,['XYZ','modify']);
我知道以前有人问过这个问题,但不是在这种情况下 (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 returns 一个空数组,我不确定为什么..
有人可以帮我解决这个问题吗?
谢谢和问候!
因为 usort
return 是一个布尔值 http://php.net/manual/en/function.usort.php 。你要return修改变量$array
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 = 柠檬
在你的 usort
函数中,第二个参数由两个值组成,第一个 ClassName
和另一个 functionName
所以你的第二个参数看起来像
usort($array,['ClassName','functionName']);
在你的情况下它会像
usort($array,['XYZ','modify']);