【发布时间】:2023-06-11 14:57:01
【问题描述】:
我正在尝试根据 first [0] 子元素对数组进行排序。但在我的代码中,键被排序中的数组编号替换:
$myArray = array(
'my last row' => array(
'0' => 'ZZZZ',
'1' => 'AAAA'
),
'the first row' => array(
'0' => 'AAAA'
)
);
usort($myArray, 'cmp' ) ;
var_dump($myArray);
function cmp ($a, $b) {
return ( ( $a[0] > $b[0] ) ? 1 : -1 );
}
结果:
array(2) {
[0]=> // should be ['the first row'] *not* [0]
array(1) {
[0]=>
string(4) "AAAA"
}
[1]=> // should be ['my last row'] *not* [1]
array(2) {
[0]=>
string(4) "ZZZZ"
[1]=>
string(4) "AAAA"
}
}
排序顺序本身似乎按预期工作。
我希望看到以下内容:
the first row => AAAA
my last row => ZZZZ, AAAA
这可能是一个非常简单的问题,但我无法解决。
非常感谢。
编辑:这种排序不涉及键本身,而是一个子元素键。我相信这让这个问题变得独一无二。
【问题讨论】:
-
“不要惊慌”关于使用“uasort”的建议效果很好,但他似乎删除了他的答案。如果你想再把它放在那里,我很荣幸选择它作为正确的。
-
@edwardsmarkf 我发现我认为是重复的内容后删除了它。老实说,对我来说,它仍然看起来像复制品。也许再看看那个?他们的比较功能是不同的,但主要的一点是他们有同样的问题,没有保留密钥。
-
不要惊慌——你是对的,它是重复的,抱歉。但是您的解决方案效果很好。可悲的是,我发现这会对性能造成巨大影响,所以我正在考虑在客户端进行排序。
标签: php arrays sorting associative-array