我有一个关联数组,如下所示:
{
"album_6":{
"name":"02-04-2014",
"id":6,
"count":"2",
"cover":"26974771533c4b57cb0aa"
},
"album_3":{
"name":"Photos of you",
"id":3,
"count":"4",
"cover":"8872935615302242c4fa6c",
"of_you":true
}
}
您的数组可以包含许多项目,但其中一个项目将具有额外的属性of_you
。
在上面的例子中,它是album_3
我想将具有 of_you
属性的项目移动到数组中的第一个位置。 我怎样才能做到这一点?
我尝试使用带有比较功能的usort
,但它似乎不起作用。
注意:该项目可以是任何数字索引。
答:
发布这个问题后,我直接找到了答案。 解决方案如下:
uasort($albums, function($a, $b) {
return (empty($a['of_you'])) ? 1 : -1;
});
如果有人有更快/更有效的方法。 请将其作为答案发布,我会接受。
编辑:为了维护关联键asort()
在这种情况下是更好的选择
即使它对你不起作用,usort
是这样的:
usort($array, function($a, $b) {
$hasA = array_key_exists('of_you', $a);
$hasB = array_key_exists('of_you', $b);
if ($hasA and $hasB) {
return 0;
}
return $hasA ? -1 : 1;
});
请记住,它不会比首先使用键of_you元素进行排序,然后再对其余元素进行排序。