检查数组值存在于包含逗号分隔值的另一个数组值中

时间:2018-05-26 06:56:58

标签: php arrays

我在PHP中有2个数组:

print_r($vid);  // contain array data
print_r($vidDB); // contain array data

输出结果为:

Array
(
    [0] => 7
)
Array
(
    [0] => 5
    [1] => 4
    [2] => 6,7
)

现在,我需要检查变量$vid中是否存在7 (来自变量$vidDB

如何使用PHP执行此操作?

我试过

array_intersect($vid, $vidDB)

但没有运气:(

4 个答案:

答案 0 :(得分:1)

您可以使用preg_grep。
如果您有多个搜索值,我会使用implode($ vid) 使用[]编辑正则表达式中替换\b以修复Nigel指出的内容。

$vid = [7];
$vidDB = [5,4,"6,71"];

$return = preg_grep("/\b" . implode("\b|\b", $vid) . "\b/", $vidDB);
Var_dump($return);

https://3v4l.org/pXPBv

如果$ return有任何值,那么它是真的 因此,您可以使用if(count($return) >0)作为您的真/假声明

编辑:具有多个搜索值和真/假输出:https://3v4l.org/3VB3a

if(count($return) >0){
    Echo "true";
}Else{
    Echo "false";
}

答案 1 :(得分:1)

您可以使用Route::resource('posts', 'PostController');implode组合列出explode上的所有数组。您可以使用$vidDB查找公共数组元素

array_intersect

答案 2 :(得分:0)

由于7是数组中的字符串,所以我不认为你可以使用简单的php函数。你最好创建一个循环遍历vidDB数组的函数,并使用explode(‘,’, $vidDB[i])来检查字符串中是否存在七个。

我不确定你是如何选择7作为第二个阵列中要搜索的数字。

答案 3 :(得分:0)

这可能是您正在寻找的

CREATE TRIGGER `insert_seance` BEFORE INSERT ON `seance` FOR EACH ROW
BEGIN
    IF (NEW.`Date/time` < CURRENT_TIMESTAMP)
        THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error for updating values';
    END IF;
END