如何编码以检查数组相交的数据?

Posted

技术标签:

【中文标题】如何编码以检查数组相交的数据?【英文标题】:how coding to check the data with array Intersect? 【发布时间】:2012-11-21 03:16:10 【问题描述】:

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

$implode1 = "apple, orange, banana";

$implode2 = "banana, mango";

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

$implode1 = "";

$implode2 = "";

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

请帮帮我:(

【问题讨论】:

我们期待什么? 4个答案,他没有赞成或接受任何一个...... 【参考方案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】:

你可以使用phparray_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!";

【讨论】:

以上是关于如何编码以检查数组相交的数据?的主要内容,如果未能解决你的问题,请参考以下文章

压缩+编码+检查+数组序列化的最快组合是啥?

如何发布具有多部分/表单数据编码的数组?

编码数据以发送到 websocket 服务器

LINQ查询以检查邮政编码是不是在起始和结束邮政编码范围内?

检查包含单词 implode / 不同数组与数组相交的值

检查 CGRect 是不是与 CGRect 数组相交