子元素上的php数组排序
我正在尝试根据第一个子元素对数组进行排序。但在我的代码中,键被替换为排序中的数组号:子元素上的php数组排序,php,arrays,sorting,associative-array,Php,Arrays,Sorting,Associative Array,我正在尝试根据第一个子元素对数组进行排序。但在我的代码中,键被替换为排序中的数组号: $myArray = array( 'my last row' => array( '0' => 'ZZZZ', '1' => 'AAAA' ), 'the first row' => array( '0' => 'AAAA' ) ); usort($myArray, 'cmp' )
$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
这可能是一个非常简单的问题,但我无法解决它
多谢各位
编辑:这种排序不涉及键本身,而是一个子元素键。我相信这使得这个问题很独特。试试这个:
它将维护您的索引关联
$myArray = array(
'my last row' => array(
'0' => 'ZZZZ',
'1' => 'AAAA'
),
'the first row' => array(
'0' => 'AAAA'
)
));
asort($myArray)
数组([第一行]=>Array([0]=>AAAA)[我的最后一行]=>Array([0]=>ZZZZ[1]=>AAAA))可能重复的“不要惊慌”使用“uasort”的建议非常有效,但他似乎删除了他的答案。如果你想再把它放在那里,我会很荣幸地选择它作为正确的一个。@edwardsmarkf我在找到我认为是重复的东西后删除了它。老实说,它在我看来仍然像是复制品。也许再看看那个?他们的比较功能是不同的,但主要的一点是,他们有相同的问题,钥匙没有被保留。不要惊慌-你是对的,这是一个重复的,对不起。但你的解决方案效果很好。遗憾的是,我发现这会对性能造成巨大的影响,因此我正在考虑在客户端进行排序。
print_r($myArray);