2016-01-21 65 views
0

我有以下PHP代碼:array_push()預計參數1是陣列,空給出

<?php 

class Session { 

    public function __construct() { 
     if (!session_id()) { 
      session_start(); 
     } 
     if (!is_array($_SESSION['messages'])) { 
      $_SESSION['messages'] = []; 
     } 
     echo is_array($_SESSION['messages']); 
    } 

    public function AddMessage($msg="") { 
     array_push($_SESSION['messages'], $msg); 
    } 

    public function GetMessages() { 
     $messages = $_SESSION['messages']; 
     unset($_SESSION['messages']); 
     return $messages; 
    } 

} 

$session = new Session(); 

?> 

和$會話級的輸出>方法addMessage( '消息')的是:

1 
Warning: array_push() expects parameter 1 to be array, null given in ...\Session.php on line 16 

所以is_array明確表示$ _SESSION ['messages']是一個數組。 我錯過了什麼?

+0

我無法重現您的錯誤,這通常是由於缺少問題中的信息造成的。你是在'$ session = new Session()'之後立即調用'$ session-> AddMessage('message')'? – Scott

+0

您是否碰巧在AddMessage()之前調用'GetMessages()'? – AbraCadaver

+0

**說明**:OP編輯了http://stackoverflow.com/revisions/34931400/1 – Thamilan

回答

1

session_id是一個函數,所以它應該是:

if (!session_id()) { //Not just session_id 
     session_start(); 
    } 

,如果您打開了錯誤報告它可能拋出:

注意:使用未定義的常量的session_id的 - 假設「 SESSION_ID」

注意:OP編輯了original question

相關問題