-1

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

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() 诡计来完成吗?

4

2 回答 2

0

如果不需要保持索引关联:

foreach($array as $key => $values) {
    $fruit[$key] = $values['fruit'];
}
array_multisort($fruit, SORT_ASC, $array);
于 2013-10-21T20:56:35.650 回答
0

使用 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');
于 2013-10-21T20:57:16.000 回答