2012-08-11 49 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

相关问题