2015-11-07 65 views
1

調用函數未正確檢查數組中是否存在該值?

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

功能:

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

出於某種原因,一直到陣列添加,我不知道我做錯了。

在此先感謝

+0

變化'array_search($標題,$ _SESSION [ '消息']);'到'array_search($標題,array_column($ _ SESSION [ '消息'] ,'title'));' –

回答

0

每次函數調用將新的值存儲到$ _SESSION [「消息」] []一個一後,如果您不想增加值,那麼你已經清除(空)數組插入新值之前。公共函數setError($ title,$ msg,$ type){ $ _SESSION ['messages'] = array(); 。 。 }

0

array_search與單維數組一起工作,爲了使它與多維數組一起工作,您需要在array_search函數中使用array_columnarray_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); 
     } 
}