PHP 按任意字符串对嵌套数组进行排序


PHP sort nested array by arbitrary string

我有一个有趣的挑战。 我有一个看起来像这样的数组:

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');