Php 将ip2long数组转换为单个对象

Php 将ip2long数组转换为单个对象,php,mysql,ip,Php,Mysql,Ip,我使用的是ip2long函数,它工作正常,并返回数组中的一长串IP地址 我想做的是将每个ip地址放入一个mysql数据库,我看了几个示例,但找不到任何与ip2long函数相关的示例,老实说,它们只是让我感到困惑 下面是我的代码 function ip_range($start, $end) { $start = ip2long($start); $end = ip2long($end); return array_map('long2ip', range($start, $end) ); }

我使用的是ip2long函数,它工作正常,并返回数组中的一长串IP地址

我想做的是将每个ip地址放入一个mysql数据库,我看了几个示例,但找不到任何与ip2long函数相关的示例,老实说,它们只是让我感到困惑

下面是我的代码

function ip_range($start, $end) {
$start = ip2long($start);
$end = ip2long($end);
return array_map('long2ip', range($start, $end) );
}

$range_one = "151.76.0.0";
$range_two = "151.76.255.255";
print_r( ip_range($range_one, $range_two) );
如有任何建议,将不胜感激


谢谢

您的功能看起来很好,生成了很多ip地址

function ip_range($start, $end) {
    $start = ip2long($start);
    $end = ip2long($end);
    return array_map('long2ip', range($start, $end) );
}

$range = ip_range("151.76.0.0", "151.76.255.255");
但我仍然不确定您希望以何种方式存储IP,每个IP都在不同的行中,还是应该在一行中

假设每个ip位于单独的行中,只需在阵列上循环:

foreach ($range as $ip) {
    // create db entry for $id
    // id column should be of type varchar(15)
}
如果整个ip范围只有一行:

$ip = implode(',', $range);
// create db entry for $id
您应该使用列类型的文本,因为这些范围可能变得相当长

在这两种情况下都浪费了大量的数据空间,为什么不在数据库中存储ip范围的长版本呢


四列id,ip_开始为
long
,ip_结束为
long
,网络名;然后,在查询ip地址时,您所要做的就是首先查找网络
$ip=ip2long(…)
,然后查找ip\u开始的网络
在数组中返回一长串ip地址“什么?您可以将它们存储为va
varchar
long
。您遇到了什么问题?我不知道如何将数组放入数据库,您的表是什么样子的,您使用的是PDO还是MYSQLI?您好,我使用的是MYSQLI,我的表有三列id、ip和netname