首先,您应该使用parse_url
来提取您的“查询”部分。然后,使用parse_str
,您可以分隔所有参数。
这允许您检查您的 URL 是否有效。
然后,如果您希望能够在所需的任何字段上对数组进行排序(而不仅仅是在 上userId
),您只需创建一个回调函数,该函数将获取数组的 2 个元素并分别返回 -1、0 或 1,如果第一个元素是 <, =, > 而不是第二个元素。
然后,要订购您的数组,您只需调用该函数usort
:
bool usort ( array &$array , callable $cmp_function )
将您的数组作为第一个参数,将您的回调函数作为第二个参数。这允许您创建任何您想要的比较回调并按照您的需要订购您的数组。
注意:注意性能。如果你的回调做了很多事情,排序将需要一些时间,因为回调函数在你的数组元素之间调用了很多时间,遵循特定的排序算法(如冒泡排序)。
这种比较函数的一个例子:
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,如果不是这种情况,最终会引发异常。