0

次のコードは常に Not present を返します。解決策を教えてください。

  <?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";
        }

   ?>
4

6 に答える 6

1

これはセッション配列の vardump です: [""]=> array(1) { [0]=> string(3) "cat" }

ご覧のとおり、$ses_arr を定義していないため、その値は "" であり、"cat" は $_SESSION[''][0] に格納されます。

于 2012-08-11T10:25:15.530 に答える
0

1)$_SESSION['ses_arr']if'ses_arr'をインデックスとして使用します。

2)$_SESSION[ses_arr]ifses_arrを事前定義された定数として使用します。

define('ses_arr','mySessionArray');

3)$_SESSION[$ses_arr]if$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";
    }

  ?>
于 2012-08-11T10:20:11.293 に答える
0

$ses_arr変数を定義していません。

それを定義すると、コードが機能します。

于 2012-08-11T10:21:05.320 に答える
0

$ses_arrこれは、データを保存するために使用するキーを決定する必要がある識別子であるか、文字列を変数と間違えたとしか考えられません。

何よりもまず、これをスクリプトの先頭の直後に配置して、エラーをオンにします<?php

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

文字列を変数と間違えた場合は、エラーが表示されます。その場合は、と交換$sess_arrすれ'sess_arr'ば問題なく動作するはずです。

于 2012-08-11T10:21:53.047 に答える
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";
    }

?>

于 2012-08-11T10:22:19.147 に答える
0

変数 $ses_arr の意味を PHP に伝えていません。session_start() の後; $ses_arr = "ses_arr"; を試してください。それならうまくいくはずです。

于 2012-08-11T10:24:58.660 に答える