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

时间:2013-10-21 20:48:28

标签: php arrays sorting

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

array(
 [1] = array(
   'fruit' => 'Banana'
 ),
 [2] = array(
   'fruit' => 'Apple'
 ),
 [3] = array(
   'fruit' => 'Grapes'
 )
)

我需要根据水果对数组进行排序,假设水果有这个优先级:

#1:Apple

#2:香蕉

#3:葡萄

最终输出应该是:

array(
 [2] = array(
   'fruit' => 'Apple'
 ),
 [1] = array(
   'fruit' => 'Banana'
 ),
 [3] = array(
   'fruit' => 'Grapes'
 )
)

这是通过某种usort()技巧来完成的吗?

2 个答案:

答案 0 :(得分:0)

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

foreach($array as $key => $values) {
    $fruit[$key] = $values['fruit'];
}
array_multisort($fruit, SORT_ASC, $array);

答案 1 :(得分: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');