加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用循环查找数组差异

发布时间:2020-12-13 22:51:32 所属栏目:PHP教程 来源:网络整理
导读:我是 PHP新手.我想在不使用任何数组函数(如array_diff()或in_array())的情况下找到数组差异. 这是我的代码 $a = array('a','b','c','d','k');$b = array('g','h','i','a','c');$match = array();$miss_match = array();$count_a = count($a);$count_b = coun
我是 PHP新手.我想在不使用任何数组函数(如array_diff()或in_array())的情况下找到数组差异.

这是我的代码

$a = array('a','b','c','d','k');
$b = array('g','h','i','a','c');
$match = array();
$miss_match = array();

$count_a = count($a);
$count_b = count($b);

for($i=0; $i<$count_a;$i++)
    {
        for($j=0; $j<$count_b;$j++)
            {
            if($a[$i]==$b[$j])
                {
                $match[] = $a[$i];
                break;
                }
            else
                {
                $miss_match[] = $b[$j];
                }   
            }
    }
print_r($match).'<br />';
print_r($miss_match);

我得到了这个结果

Array ( [0] => a [1] => b [2] => c [3] => d ) 
Array ( [0] => g [1] => h [2] => i [3] => b [4] => g [5] => h 
[6] => i [7] => g [8] => h [9] => i [10] => b [11] => a [12] => d 
[13] => g [14] => h [15] => i [16] => b [17] => a [18] => g 
[19] => h [20] => i [21] => b [22] => a [23] => d [24] => c )

我的预期结果是

Array ( [0] => g [1] => h [2] => i [3] => k )

请建议更好的解决方案.谢谢

解决方法

您正在将该元素添加到miss_match数组中,以用于与其不匹配的另一个数组的每个元素.但如果它与此元素不匹配,它可能仍然匹配后面的元素.

在确定它与其中任何一个都不匹配之前,您必须遍历整个阵列.

for($i=0; $i<$count_a;$i++)
{
    for($j=0; $j<$count_b;$j++)
    {
        $matched = false;
        if($a[$i]==$b[$j])
        {
            $match[] = $a[$i];
            $matched = true;
            break;
        }
    }
    if (!$matched)
    {
        $miss_match[] = $a[$i];
    }   
}

结果:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)
Array
(
    [0] => k
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读