我有两个变量,$newIpStart
和$newIpEnd
。
知道我如何递增最后一个八位字节,从$newIpStart
到$newIpEnd
并将其存储在数组f.e。中?
更清楚地看一下这个例子。
$newIpStart = '192.168.1.1'; //string
$newIpEnd = '192.168.1.150'; //string
我希望所有IP都在192.168.1。 1 和192.168.1之间。 150 (包括启动IP和结束IP)。
请注意,在示例中192.168.1
(前三个八位字节是静态的 - 它们不会改变),只需要递增最后一个八位字节。
所以介于两者之间,我应该得到IP'如:
`192.168.1.1`
`192.168.1.2`
`192.168.1.3`
.. n ..
`192.168.1.150`
在我获得所有这些IP之后,我会将其存储在数组中,因此我可以将其循环,并对每个IP执行一些操作。
有什么想法吗?
答案 0 :(得分:1)
使用爆炸版:
$newIpStart = '192.168.1.1';
$newIpEnd = '192.168.1.150';
$arrayIpStart = explode('.', $newIpStart);
$arrayIpEnd = explode('.', $newIpEnd);
$count = end($arrayIpEnd) - end($arrayIpStart);
$arrayIpResult = array();
for ($i = 1; $i <= $count; $i++) {
$arrayIpStart[3] = $i;
$arrayIpResult []= implode('.', $arrayIpStart);
}
return $arrayIpResult;
它应该起作用,而不是我想的最佳方式。
答案 1 :(得分:0)
只需使用while循环:
$base = '192.168.1.';
$ips = array();
$i = 1;
while($i < 150){
$ips[] = $base.$i;
$i++;
}
var_dump($ips);
如果您不确定范围的结尾,可以使用字符串函数来获取最后一个八位字节并在循环中使用它。