まず、を使用parse_url
して「クエリ」部分を抽出する必要があります。次に、を使用してparse_str
、すべてのパラメーターを分離できます。
これにより、URLが有効であることを確認できます。
次に、(だけでなく)任意のフィールドで配列を並べ替えることができるようにする場合はuserId
、配列の2つの要素を受け取り、それぞれ-1、0、または1を返すコールバック関数を作成する必要があります。最初の要素は2番目の要素よりも<、=、>です。
次に、配列を注文するには、関数を呼び出す必要がありますusort
。
bool usort ( array &$array , callable $cmp_function )
配列を最初のパラメーターとして、コールバック関数を2番目のパラメーターとして指定します。これにより、必要な比較コールバックを作成し、必要に応じて配列を並べ替えることができます。
注:パフォーマンスに注意してください。コールバックが多くのことを行う場合、特定の並べ替えアルゴリズム(バブリング並べ替えなど)に従って、コールバック関数が配列の要素間で多くの時間呼び出されるため、並べ替えに時間がかかります。 )。
このような比較関数の例:
function compareUrlCustom($u1, $2)
{
// Parse the 2 URLs
$urlParts1 = parse_url($u1);
$urlParts2 = parse_url($u2);
// Extract and parse the 2 query parts
$queryParts1 = array();
$queryParts2 = array();
parse_str($urlParts1['query'], $queryParts1);
parse_str($urlParts2['query'], $queryParts2);
// Return 1, O or -1 as comparision value
if ($queryParts1['userId'] > $queryParts2['userId'])
return 1;
else if ($queryParts2['userId'] > $queryParts1['userId'])
return -1;
else
return 0;
}
そして、次のようにして配列の種類を呼び出すことができます。
$wellSorted = usort($yourArray, compareUrlCustom);
$wellSorted
ソート操作が成功したかどうかを確認します。
注:compareUrlCustom
有効なURLがあることを確認するために関数にチェックを追加し、そうでない場合は最終的に例外をスローする必要があります。