2012-08-11 48 views
0

以下代碼始終回顯不存在。你能給我解決方案嗎?是否可以在php中使用會話數組?

<?php 

     session_start(); 
     $_SESSION[$ses_arr]=array(); 
     $word="cat"; 
     array_push($_SESSION[$ses_arr],$word); 

     if(in_array($word,$_SESSION[$ses_arr])) 
     { 
     echo "present"; 
     } 
     else 
     { 
     echo "Not Present"; 
     } 

    ?> 
+1

'$ ses_arr'可能應該是'ses_arr'? – 2012-08-11 10:18:05

+0

如果你沒有看到錯誤,[打開](http://php.net/manual/en/function.error-reporting.php)'error_reporting(E_ALL);' – Stano 2012-08-11 11:34:40

回答

0

1)如果'ses_arr'是索引,則使用$_SESSION['ses_arr']

2)如果ses_arr是預定義常數,則使用$_SESSION[ses_arr]

define('ses_arr','mySessionArray'); 

3)使用$_SESSION[$ses_arr]如果$ses_arr是一個預定義的變量。

$ses_arr = 'mySessionArray'; 

下面的代碼會爲你工作:

<?php 

    session_start(); 
    $_SESSION['ses_arr']=array(); 
    $word="cat"; 
    array_push($_SESSION['ses_arr'],$word); 

    if(in_array($word,$_SESSION['ses_arr'])) 
    { 
    echo "present"; 
    } 
    else 
    { 
    echo "Not Present"; 
    } 

    ?> 
0

您還沒有定義$ses_arr變量。

定義它,你的代碼將工作。

0

我只能假設$ses_arr是一些標識符,您必須決定使用哪個鍵保存數據,或者您已將某個字符串誤認爲變量。

首先,通過<?php之後把這個在你的腳本的頂部打開錯誤:

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

如果你誤認爲是一個變量,它會顯示錯誤的字符串。在這種情況下,用​​代替$sess_arr,它應該完美無缺地工作。

0

這應該工作:

<?php 

    session_start(); 
    $ses_arr = array(); 
    $_SESSION['ses_arr']=$ses_arr; 
    $word="cat"; 
    array_push($_SESSION['ses_arr'],$word); 

    if(in_array($word,$_SESSION['ses_arr'])) 
    { 
    echo "present"; 
    } 
    else 
    { 
    echo "Not Present"; 
    } 

>

+0

這是行不通的。數組索引必須用引號引起來。 – 2012-08-11 10:26:23

0

你沒有告訴PHP變量$ ses_arr意味着什麼?。在session_start()後面加上 ;嘗試$ ses_arr =「ses_arr」;那麼它應該工作。

1

這是您的會話陣列vardump:[ 「」] =>數組(1){[0] =>串(3) 「貓」}

正如你可以看到,因爲你必須不定義$ ses_arr,它的值是「」所以「cat」存儲在$ _SESSION [''] [0]

+0

是的,在下面的附加列表中也值得注意:'var_dump($ ses_arr);重置($ _ SESSION); var_dump(key($ _ SESSION));'顯示,「Undefined variable:ses_arr」已從NULL轉換爲string(0) – Stano 2012-08-11 11:27:16

相關問題