0

我需要对数组进行排序,我以前做过,但这很容易,因为数组有数字或字母可以按升序/降序或字母顺序排序。在这种情况下,我有一个数组,其中每个元素都有 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;

或开关盒,然后按新值对其进行排序。这可行,但我的问题是,有没有可以将数组传递给的函数和排序字符串或其他东西?

谢谢你,詹姆斯

4

2 回答 2

0

使用用户定义的函数并选择按键或值排序,您需要在此处查看所有列表函数:http ://www.php.net/manual/en/array.sorting.php

于 2013-07-10T07:56:17.647 回答
0

在 php 5.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");
于 2013-07-10T07:56:47.557 回答