【问题标题】:how coding to check the data with array Intersect?如何编码以检查数组相交的数据?
【发布时间】:2026-01-31 14:55:01
【问题描述】:

我想检查是否将数据输入数据库。检查如下

$implode1 = "apple, orange, banana";

$implode2 = "banana, mango";

如果变量$implode1 中的香蕉也包含在变量$implode2 中,则应显示警告消息。 如果变量的值为空,则执行将被忽略。示例:

$implode1 = "";

$implode2 = "";

如何为上述问题编写代码?

请帮帮我:(

【问题讨论】:

  • 我们期待什么? 4个答案,他没有赞成或接受任何一个......

标签: php arrays array-intersect


【解决方案1】:
$implode1 = "apple, orange, banana";
$implode2 = "banana, mango";

$implode1Array = explode(", ", $implode1);
$implode2Array = explode(", ", $implode2);

$result = array_intersect($implode1Array, $implode2Array);

if(count($result) > 0) {
    exit('Error!');
}

【讨论】:

    【解决方案2】:

    通常我会假设你所说的 cat 是指串联,但在这里似乎不合适。但是,假设这就是您的意思,您只需检查两个变量中的相同连接字符(逗号),如下所示:

    if ( stristr($implode1, ",") && stristr($implode2, ",") ) {
        // error
    } else {
        // success, do something
    }
    

    但是,假设您的意思是在两个变量中输入了相同的项目,在这种情况下是水果,您可以这样检查:

    $im1 = explode(",", $implode1);
    $im2 = explode(",", $implode2);
    foreach($im1 as $i) {
        if ( array_search($i, $im2) ) {
            // error
        } else {
            // success, do something
        }
    }
    

    您当然可以只在两个字符串中搜索给定值,但我认为这不是您想要的。但假设是这样,代码如下:

    $duplicate = "apple"; // the item you are searching for a duplicate of
    if ( stristri($implode1, $duplicate) && stristr($implode2, $duplicate) ) {
        // error
    } else {
        // success, do something
    }
    

    【讨论】:

      【解决方案3】:
      if (count(array_intersect)) { /* warning */ }
      

      【讨论】:

        【解决方案4】:

        你可以使用PHP的array_intersect函数来获取交集(见http://php.net/manual/en/function.array-intersect.php):

        $arr1 = explode(", ", "apple, orange, banana");
        $arr2 = explode(", ", "banana, mango");
        $intersection = array_intersect($arr1, $arr2);
        if (count($intersection) > 0) {
            echo "WARNING: the lists have a non-empty intersection!";
        }
        

        【讨论】: