通过个性化排序的PHP排序数组

通过个性化排序的PHP排序数组,php,arrays,Php,Arrays,我需要对数组进行排序,我以前做过,但这很容易,因为数组中有数字或字母可以按升序/降序或字母顺序排序。。在这种情况下,我有一个数组,每个元素有3个值,例如: array[0]=code=1234 =description='example array' =orderCode=P array[1]=code=1235 =description='example array1' =orderCode=A . . . 现在,我需要按如下

我需要对数组进行排序,我以前做过,但这很容易,因为数组中有数字或字母可以按升序/降序或字母顺序排序。。在这种情况下,我有一个数组,每个元素有3个值,例如:

array[0]=code=1234
        =description='example array'
        =orderCode=P

array[1]=code=1235
        =description='example array1'
        =orderCode=A
.
.
.
现在,我需要按如下顺序排列顺序读取orderCode值:p,i,B,C,A,S,D。 我想到的自满方式是向数组中添加另一个值,比如:

if($array[$c]['orderCode'] == 'P')
     $array[$c]['newOrderCode'] = 0;
if($array[$c]['orderCode'] == 'I')
     $array[$c]['newOrderCode'] = 1;
if($array[$c]['orderCode'] == 'B')
     $array[$c]['newOrderCode'] = 2;
或开关盒,然后按新值排序。这是可行的,但我的问题是,是否有一个可以将数组传递给的函数和一个Ordering字符串或其他东西

谢谢,,
James

使用用户定义的函数并选择按键或值排序您需要查看此处的所有列表函数:

在PHP5.3及更高版本中,您可以使用带闭包的usort

$order = array('P','I','B','C','A','S','D');
usort($array, function ($a, $b) use ($order){
     return array_search($a["orderCode"], $order) - array_search($b["orderCode"], $order);
});
在此之前,您必须创建一个分拣机功能

function orderCode_sorter($a, $b){
    $order = array('P','I','B','C','A','S','D');
    return array_search($a["orderCode"], $order) - array_search($b["orderCode"], $order);
}
usort($array, "orderCode_sorter");