0

現在、別の配列の値に基づいて並べ替える必要のある値の連想配列があります。

例:

値の配列がある場合、AssocArray = '122' => '12'、 '123' => '32'、 '232' => '54'、 '343' => '12'

別の値の配列、orderArray = '232'、'123'と照合する必要があります

存在する場合は、値をAssocArrayの先頭にプッシュします。したがって、最終的な配列は次のようになります。

AssocArray = '232' => '54'、 '123' => '32'、 '122' => '12'、 '343' => '12'

申し訳ありませんが、動作するコードはありません。まだPHPを学習しています。

どんな助けでも本当にありがたいです:)ありがとう。

4

2 に答える 2

2

をループして$orderArray、そのキーを持つ要素がに存在するかどうかを確認します$AssocArray。そうである場合は、その要素を配列に追加し、元の要素から$result削除し$AssocArrayます。次に、残りの要素を配列$AssocArrayの一番上にプッシュされたものとマージする必要があります。$results

$AssocArray = array( '122'=>'12', '123'=>'32', '232'=>'54', '343'=>'12');
$orderArray = array( '232', '123');

rsort( $orderArray, SORT_STRING); // Make sure the order array is sorted from highest to lowest

$result = array();
foreach( $orderArray as $key) {
    if( isset( $AssocArray[ $key ])) {
        $result[$key] = $AssocArray[ $key ];
        unset( $AssocArray[ $key ]);
    }
}

foreach( $AssocArray as $k => $v) {
    $result[$k] = $v;
}

print_r( $result); // Print the resulting array

あなたはこれが印刷するのを見ることができます:

Array
(
    [232] => 54
    [123] => 32
    [122] => 12
    [343] => 12
)
于 2012-09-06T21:01:20.490 に答える
0
$orderArray = array("232", "123");

function customSort($key1, $key2){
    $key1Pos = array_search($key1, $orderArray);
    $key2Pos = array_search($key2, $orderArray);
    if($key1Pos !== NULL && $key2Pos != NULL){
        return $key1Pos - $key2Pos;
    }else if($key1Pos === NULL){
        return 1;
    }else{
        return -1;
    }
}


uksort($array, "customSort");
于 2012-09-06T21:05:53.863 に答える