编码以使用数组Intersect检查数据

时间:2012-11-09 08:32:32

标签: php arrays

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

$implode1 = "cat, dog, chicken";

$implode2 = "cow, goat, cat";

如果变量$implode1中的cat也包含在变量$implode2中,则它应显示警告消息。如何编码上述问题?

请帮帮我:(

5 个答案:

答案 0 :(得分:2)

您可以将explode字符串添加到数组中,然后使用array_intersect返回两者中存在的值,例如:

$string1 = 'cat, dog, chicken';
$string2 = 'cow, goat, cat';

$compare = explode(', ', $string1);
$against = explode(', ', $string2);

$matches = array_intersect($compare, $against);

答案 1 :(得分:2)

$implode1 = "cat, dog, chicken";
$implode2 = "cow, goat, cat";

$imp1 = explode(', ',$implode1);
$imp2 = explode(', ',$implode2);

foreach($imp1 as $val){
    if(in_array($val,$imp2)) {
        echo "$val is present in $implode2";
    }
}

答案 2 :(得分:0)

循环第一个数组并检查第二个数组中是否存在任何元素 - 如下所示:

foreach($implode1 as $val){
if(in_array($val,$implode2)) {

    echo "$val is exists in the implode2 array";

       }
}
哦,对不起,这些只是字符串。首先爆炸它们:

arr_implode1 = explode(", ",$implode1)
arr_implode1 = explode(", ",$implode2)

答案 3 :(得分:0)

如果值已经存在,您可以在将值插入数据库之前进行检查:

if not exists (select * from TestTable where column NOT IN {$implode})
begin
    ...Do something here!!
end

答案 4 :(得分:0)

创建一个能够以数组的形式从每个字符串中提取值的函数,然后获取交集。如果它不是FALSE,则有一个交叉点,警告也是如此:

$values = function($string) {
    return explode(', ', $string);
};

if (array_intersect($values($implode1), $values($implode2))) {
    trigger_error('Values intersect', E_USER_WARNING);
}

See it in action