我有一个有趣的挑战。 我有一个看起来像这样的数组:
array(
[1] = array(
'fruit' => 'Banana'
),
[2] = array(
'fruit' => 'Apple'
),
[3] = array(
'fruit' => 'Grapes'
)
)
我需要根据水果对数组进行排序,假设水果具有以下优先级:
#1:苹果
#2:香蕉
#3:葡萄
最终输出应该是:
array(
[2] = array(
'fruit' => 'Apple'
),
[1] = array(
'fruit' => 'Banana'
),
[3] = array(
'fruit' => 'Grapes'
)
)
这会通过某种 usort() 诡计来完成吗?
如果不需要
保留索引关联:
foreach($array as $key => $values) {
$fruit[$key] = $values['fruit'];
}
array_multisort($fruit, SORT_ASC, $array);
使用 usort 的示例:
<?php
$arr = array(
array(
'fruit' => 'Banana'
),
array(
' fruit' => 'Apple'
),
array(
'fruit' => 'Grapes'
)
);
function sortByFruit($arr1, $arr2)
{
if ($arr1['fruit'] == $arr2['fruit']) {
return 0;
} elseif ($arr1['fruit'] < $arr2['fruit']) {
return -1;
} else {
return 1;
}
}
usort($arr, 'sortByFruit');