[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отсортировать диапазон IP
савелей
Привет всем,
у меня просьба, помогите отсортировать IP диапазоны,
нужно из списка вида:

44.202.254.0
44.202.254.0
44.202.255.0
22.160.84.0
22.160.85.0
22.160.86.0
22.160.86.0
22.160.87.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.97.0
22.160.98.0
22.160.98.0
22.160.99.0
22.160.117.0
22.160.118.0
22.160.118.0
22.160.119.0
22.160.120.0
22.160.120.0
22.160.120.0
22.160.120.0
22.160.121.0
22.160.122.0
22.160.122.0
22.160.123.0
22.160.124.0
22.160.124.0
22.160.124.0
22.160.125.0
22.160.126.0
22.160.126.0
22.160.127.0
9.204.196.0
9.204.196.0
9.204.196.0
9.204.197.0
9.204.198.0
9.204.198.0
9.204.199.0
9.246.128.0
9.246.128.0
9.246.128.0
9.246.130.0
9.246.132.0
9.246.134.0
9.246.136.0
9.246.136.0
9.246.138.0
9.246.140.0
9.246.142.0
9.246.144.0
9.246.144.0
9.246.146.0
9.246.148.0
9.246.150.0
9.246.152.0
9.246.152.0
9.246.154.0
9.246.156.0
9.246.158.0
9.250.51.0
9.250.52.0
9.250.52.0
9.250.52.0
9.250.53.0
9.250.54.0
9.250.54.0
9.250.55.0
9.250.56.0
9.250.56.0
9.250.56.0
9.250.56.0
9.250.57.0
9.250.58.0
9.250.58.0
9.250.59.0
9.250.60.0​

получить список:

44.202.254.0
44.202.255.0

22.160.84.0
22.160.87.0

22.160.96.0
22.160.99.0

22.160.117.0
22.160.127.0

9.204.196.0
9.204.199.0

9.246.128.0
9.246.158.0​

прошу помогите, буду благодарен любой информации..
killer8080
$temp = array_map('ip2long', $ips);
rsort($temp);
$ips = array_map('long2ip', $temp);




Спустя 16 минут, 13 секунд killer8080 написал(а):
еще проще, без временного массива
usort($ips, function($a, $b) { 
$a = ip2long($a);
$b = ip2long($b);

if ($a == $b) {
return 0;
}

return ($a < $b) ? 1 : -1;
});
савелей
Цитата (killer8080 @ 13.04.2018 - 09:11)
$temp = array_map('ip2long', $ips);
rsort($temp);
$ips = array_map('long2ip', $temp);




Спустя 16 минут, 13 секунд killer8080 написал(а):
еще проще, без временного массива
usort($ips, function($a, $b) { 
$a = ip2long($a);
$b = ip2long($b);

if ($a == $b) {
return 0;
}

return ($a < $b) ? 1 : -1;
});



я так понял , это просто сортировка?
а мне нужно именно выбрать уникальные плюс к ним первый и последний...

пример:
то есть было:

22.160.84.0
22.160.85.0
22.160.86.0
22.160.86.0
22.160.87.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.97.0
22.160.98.0
22.160.98.0
22.160.99.0
22.160.117.0
22.160.118.0
22.160.118.0
22.160.119.0
22.160.120.0
22.160.120.0
22.160.120.0
22.160.120.0
22.160.121.0
22.160.122.0
22.160.122.0
22.160.123.0
22.160.124.0
22.160.124.0
22.160.124.0
22.160.125.0
22.160.126.0
22.160.126.0
22.160.127.0

получить только 6 адресов уникальных, начало, конец...

22.160.84.0
22.160.87.0

22.160.96.0
22.160.99.0

22.160.117.0
22.160.127.0

сам уже замучился:(

$temp = array_map('ip2long', $ips);
rsort($temp);
$ips = array_map('long2ip', $temp);




Спустя 16 минут, 13 секунд killer8080 написал(а):
еще проще, без временного массива
usort($ips, function($a, $b) { 
$a = ip2long($a);
$b = ip2long($b);

if ($a == $b) {
return 0;
}

return ($a < $b) ? 1 : -1;
});



я так понял , это просто сортировка?
а мне нужно именно выбрать уникальные плюс к ним первый и последний...

пример:
то есть было:

22.160.84.0
22.160.85.0
22.160.86.0
22.160.86.0
22.160.87.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.96.0
22.160.97.0
22.160.98.0
22.160.98.0
22.160.99.0
22.160.117.0
22.160.118.0
22.160.118.0
22.160.119.0
22.160.120.0
22.160.120.0
22.160.120.0
22.160.120.0
22.160.121.0
22.160.122.0
22.160.122.0
22.160.123.0
22.160.124.0
22.160.124.0
22.160.124.0
22.160.125.0
22.160.126.0
22.160.126.0
22.160.127.0

получить только 6 адресов уникальных, начало, конец...

22.160.84.0
22.160.87.0

22.160.96.0
22.160.99.0

22.160.117.0
22.160.127.0

сам уже замучился:(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.