PHP没有在assigned_IPs和IP_array之间返回唯一的项目。我需要一个独特的输出。
我已经尝试合并数组并比较它们。
$ips2 = array();
while ($row = mysql_fetch_assoc($result))
{
$ips2[] = $row["ipaddr"];
}
$assigned_ips = $ips2;
$ip_array = explode("\n",$ips);
$ips_left = array_diff($ip_array,$assigned_ips);
PHP比较2个项目列表后,我需要返回一个唯一的数组。
幸运的是,PHP有一个array_unique()功能就是为了这个目的!您可以在array_diff()
之前在两个比较的数组上执行它,但我非常确定最好(最有效)的做法是在您已经有结果时只执行一次:
$ips2 = array();
while ($row = mysql_fetch_assoc($result))
{
$ips2[] = $row["ipaddr"];
}
$assigned_ips = $ips2;
$ip_array = explode("\n",$ips);
$ips_left = array_unique(
array_diff($ip_array,$assigned_ips)
);
仅仅为了完整性,如果你有大量的重复项会使array_diff()
函数陷入困境,这里有一种替代方法可以更有效:
$ips2 = array();
while ($row = mysql_fetch_assoc($result))
{
$ips2[] = $row["ipaddr"];
}
$assigned_ips = $ips2;
$ip_array = explode("\n",$ips);
$ips_left = array_diff(
array_unique($ip_array)
array_unique($assigned_ips)
);