没有正确检查数组中是否存在值?

时间:2015-11-07 05:58:53

标签: php multidimensional-array

调用函数

$Products = Products::find()->where(['in', 'ChildId', $Query1])->
    orWhere(['in', 'ChildId', $Query2]);

功能:

$user->setError("h", "h", "error");
$user->setError("h2", "h", "error");` 

由于某种原因,它不断添加到阵列,我不知道我做错了什么。

提前致谢

2 个答案:

答案 0 :(得分:0)

每次函数调用它都会将新值存储到$ _SESSION ['messages'] []中,如果您不想添加值,则必须在插入新值之前清除(清空)数组。    public function setError($ title,$ msg,$ type){    $ _SESSION ['messages'] = array();    。    。    }

答案 1 :(得分:0)

array_search适用于单维数组,使其适用于您需要在array_column函数中使用array_search的多维数组。 array_colum将有两个要搜索的参数数组和列名。 在您的情况下,代码如下:

public function setError($title, $msg, $type) {
   if(!isset($_SESSION['messages'])) {
        $_SESSION['messages'][] = array("title" => $title, "message" => $msg, "type" => $type);
   } else {
        $key = array_search($title, array_column($_SESSION['messages'], 'title'));
        if($_SESSION['messages'][$key]['title'] !== $title)
            $_SESSION['messages'][] = array("title" => $title, "message" => $msg, "type" => $type);
        }
}