Как получить уникальный вывод в PHP из нескольких элементов и массивов - PullRequest
0 голосов
/ 22 марта 2019

PHP не возвращает уникальные элементы между assign_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 списка элементов.

1 Ответ

0 голосов
/ 22 марта 2019

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