私の配列には、特定の文字セットのみが含まれます。ただし、これらの文字は任意の順序で配列に表示される可能性があります。
この配列を並べ替えて、常に同じ順序になるようにします。
配列に1つのエントリが含まれる場合もあれば、最大4つのエントリが含まれる場合もあるため、これは可能ですか?
配列に表示される文字() ^ & ! #
は
理想的には、常に次の順序にする必要があります。
! # ^ & ()
これは可能ですか?
ありがとう
要件に応じて、組み込みの PHP ソート関数のいずれかを使用できます。
おそらくあなたが最も興味を持っているのは2つです
ただし、他にもかなりの数があります-PHPマニュアルの配列の並べ替えを参照してください
または、代わりに、結果の並べ替え順序が目的の順序と一致しない場合は、カスタム並べ替え関数を定義できるusortを使用できます。
このようなものが動作するはずです
$arrayToSort = array('#','&','()','^','!');
$order = array( '!', '#', '^', '&', '()');
function compare($a,$b) {
global $order;
$indexa = array_search($a,$order);
$indexb = array_search($b,$order);
return ($indexa < $indexb) ? -1 : 1;
}
usort($arrayToSort, $compare);
このようなことを試してください
// establish the sort order
$order = array("!","#", "^", "&", "(",")");
// usort with indexes of $orderArray
usort($arr, function($a, $b) use($order) {
$aIdx = array_search($a, $order);
$bIdx = array_search($b, $order);
return $aIdx - $bIdx;
});