为了账号安全,请及时绑定邮箱和手机立即绑定

php - 如何在不使用内置函数的情况下在php中找到一个数组到另一个数组的缺失元素?

php - 如何在不使用内置函数的情况下在php中找到一个数组到另一个数组的缺失元素?

PHP
墨色风雨 2021-09-05 16:11:12
正如我在下面提到的,我有两个数组:$arr1 = array("1","3","4","6");$arr2 = array("2","3","4","5","7");我想在$arr2不使用内置函数的情况下获取那些不在的元素。那么,我该怎么做呢?
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您可以循环两次并在匹配时取消设置并中断内部循环


$arr1 = array("1","3","4","6");

$arr2 = array("2","3","4","5","7");


foreach($arr1 as $k => $v){

    foreach($arr2 as $k1 => $v1){

        if($v == $v1){

            unset($arr1[$k]);break;

        }

    }

}

print_r($arr1);


输出:


Array

(

    [0] => 1

    [3] => 6

)


查看完整回答
反对 回复 2021-09-05
?
www说

TA贡献1775条经验 获得超8个赞

我对在 PHP 中不使用任何数组函数或特殊函数的问题很感兴趣,所以这里是我想出的比较两个数组的方法(正如它们所写的那样,没有执行进一步的测试,它可能会中断) 而不使用这些函数。它需要一些杂耍:


$arr1 = array("1","3","4","6");

$arr2 = array("2","3","4","5","7");


$inTwo = array();

$notInTwo = array();


// get the matching elements from the two arrays to create a new array

foreach($arr1 AS $key => $val) {

    foreach($arr2 AS $key2 => $val2) {

        if($val == $val2) {

            $inTwo[] = $val2;

        }

    }

}


print_r($inTwo);

$match = NULL; // variable used to hold match values, so they can be skipped


foreach($arr1 AS $key3 => $val3) {

    foreach($inTwo AS $key4 => $val4) {

        echo $val3 . ' ' . $val4 . "\n";

        if(($val3 == $val4) || ($match == $val4)) { // test

            echo "match\n";

            $match = $val3; // set the new variable, to be checked on the next iteration

            echo $match ."\n";

            break;

        } else {

            $notInTwo[] = $val3;

            break;

        }

    }

}


print_r($notInTwo);

这是输出(所有测试输出留作参考):


Array //print_r($inTwo);

(

    [0] => 3

    [1] => 4

)

1 3

3 3

match // set the match variable

3

4 3 // skip this due to the match

match // set the match variable

4

6 3

Array print_r($notInTwo);

(

    [0] => 1

    [1] => 6

)



区分两个数组需要一些递归。如果您想知道这是如何工作的,您可以查看 PHP(以及其他提供差异算法的语言)的源代码,以了解如何执行此操作。我在这里写的东西很粗糙,是一种针对这个问题的牛在中国商店的方法。


查看完整回答
反对 回复 2021-09-05
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信