首页 > 解决方案 > 如何从多个项目和数组中获取 PHP 中的唯一输出

问题描述

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 个项目列表,我需要返回一个唯一的数组。

标签: phpsquidwhmcs

解决方案


幸运的是,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)
);

推荐阅读