К счастью для вас, 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)
);