Во-первых, вы должны использовать 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-адрес действителен, и в конечном итоге выдать исключение, если это не так.
person
MatRt
schedule
26.02.2013
$arr[$userid] = $linklong;
, а затем просто звонюksort()
на него. - person Michael Berkowski   schedule 26.02.2013