北、東、南または西の値を含む配列を持っています。配列をソートで並べ替え
たとえば、南、西、北の順に値を持つ配列があります。
今、北、東、南、西のような配列をソートしたいと思います。
私の例では、値はこの順序でなければなりません:北、南、西。
どうすればいいですか?
ありがとうございます!
北、東、南または西の値を含む配列を持っています。配列をソートで並べ替え
たとえば、南、西、北の順に値を持つ配列があります。
今、北、東、南、西のような配列をソートしたいと思います。
私の例では、値はこの順序でなければなりません:北、南、西。
どうすればいいですか?
ありがとうございます!
また、array_intersect()
を使用することもできます。最初の配列の順序が保持されます。すべての基本方向の配列を最初のパラメーターとして正しい順序で、配列を2番目のパラメーターとして並べ替えます。
$cardinals = array('north', 'east', 'south', 'west');
$input = array('south', 'west', 'north');
print_r(array_intersect($cardinals, $input));
あなたはこの線に沿って何か(私はそれがサミュエル・ロペスもコメントで示唆されているものだと信じて)行うことができます:これは、その数の各方向と種類に番号を割り当て
$arr = array ('north', 'west', 'south', 'east',);
function compass_sort ($a, $b)
{
$cmptable = array_flip (array (
'north',
/* you might want to add 'northeast' here*/
'east',
/* and 'southeast' here */
'south',
'west',
));
$v1 = trim (mb_strtolower ($a));
$v2 = trim (mb_strtolower ($b));
if (! isset ($cmptable[$v1])
|| ! isset ($cmptable[$v2]))
{
/* error, no such direction */
}
return $cmptable[$v1] > $cmptable[$v2];
}
usort ($arr, 'compass_sort');
を、north
には0が割り当てられ、east
となります(間に何かを追加しない限り)。
これまでに行ったことをいくつか追加してください。たとえそれが配列の定義だけであっても。そして、あなたが問題に悩まされている箇所を強調することもできます。 – hakre
[配列の並べ替え機能の比較](http://www.php.net/manual/en/array.sorting.php)が非常に役に立ちます。 – hakre
もう少し詳しく説明できますか?なぜこの方法でソートしたいのですか?あなたは何をしようとしているのですか?今のように、なぜあなたはそれが含まれている必要があるかを知っているので、あなたが望むようにソートした配列を作成しないのはなぜですか? –