0

配列をソートする必要があります。以前にこれを行ったことがありますが、配列には昇順/降順またはアルファベット順でソートする数字または文字があったため、簡単でした..この場合、各要素に3つの値を持つ配列があります、例:

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

array[1]=code=1235
        =description='example array1'
        =orderCode=A
.
.
.

ここで、P、I、B、C、A、S、D の順序で orderCode 値を読み取ってこれらを注文する必要があります。私が回避しようと考えた方法は、別の値を配列に追加し、次のようなものにすることでした。

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;

または switch ケースを使用して、新しい値で並べ替えます。これは機能しますが、私の質問は、配列を渡すことができる関数と順序付け文字列などはありますか?

ありがとう、ジェームズ

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 に答える