我有两个数组如下:
Array
(
[27119] => Array
(
[firstname] => Array
(
[0] => Testfname1
)
[lastname] => Array
(
[0] => Testlname1
)
[photograph] => Array
(
[0] => 27120
)
[priority] => Array
(
[0] => Open
)
[primary_location] => Array
(
[0] => 27098
)
)
[27137] => Array
(
[firstname] => Array
(
[0] => Testfname2
)
[lastname] => Array
(
[0] => Testlname2
)
[photograph] => Array
(
[0] => 27138
)
[priority] => Array
(
[0] => Featured
)
[primary_location] => Array
(
[0] => 27098
)
)
)
现在我想基于priority
键的值对数组进行排序,如果它的值是Featured
那么整个元素(包含该对的数组) )应该在之前发生(如果没有其他候选人具有&= 39; priority =>特色')包含' priority =>的元素。开放'在数组中。如果它的值为Open
,那么它的父数组应该在包含' priority =>的父元素之前。闭合'
总而言之,我想通过" priotity"对给定的多维数组进行排序。价值和条件。
我想过使用usort,但我无法初步了解如何在那些array_sort函数中设置它。有人可以帮忙吗?
答案 0 :(得分:1)
让我们假设父数组的名称为testArray。然后使用PHP函数usort定义比较器回调函数应该如下所示:
$sortedArray = usort($testArray, function($left, $right) {
if($left['priority'][0] == $right['priority'][0]) { return 0; }
if($left['priority'][0] == 'Featured' || ($left['priority'][0] == 'Opened' && $right['priority'][0] == 'Closed')) { return -1; }
else { return 1; }
});
尝试此变体