簡體   English   中英

PHP會話變量數組

[英]PHP Session Variable Array

嗨,我正在嘗試了解會話變量,尤其是將它們與數組一起使用。 在下面的示例代碼中,用戶輸入一個字母,我想將該提交添加到會話變量中,以便下次用戶提交字母時,我不會丟失上一個條目。

因此,如果用戶輸入“ e”,則數組將顯示“ e”,如果用戶隨后選擇了“ s”,則數組將現在顯示“ e”和“ s”。 這是我第一次使用PHP進行實驗,事實證明會話很難使我難以理解。 誰能幫助我了解如何獲得所需的結果,或者下面的代碼在哪里出錯了? 提前謝謝了。

<?php
session_start();
function example()
{
$_SESSION['lettersGuessed'] = array();
$userLetter = $_GET['input'];
array_push($_SESSION['lettersGuessed'],$userLetter);
print_r($_SESSION['lettersGuessed']);
}


if (strlen($_GET['input'])==1) {
  if (ctype_lower($_GET['input'])) 
    {
        echo "The user-submitted letter is lowercase.<br>";
        example();
    } 

  else 
    {
        echo "Invalid submission<br>";
    }
}
?>
<form action="" method="get">
<input name="input" value="Enter a letter!" />
<input type="submit" value="Submit" />
</form>

問題在於,每次調用函數時, example()開頭的行會將會話變量重置為空白數組。

更新您的example()函數,如下所示:

function example()
{
    $_SESSION['lettersGuessed'][] = $_GET['input'];
    print_r($_SESSION['lettersGuessed']);
}

幸運的是,PHP是松散類型的,因此您不必手動將lettersGuessed定義為數組。 之后簡單地使用[]會將其作為數組處理,然后使用=賦值運算符將$_GET['input']推入其中。

在沒有array_push的情況下以更簡單的方式嘗試

示例函數有一個簡單的變化。

以下是完整的代碼

<?php
session_start();

function example() {
    $userLetter = $_GET['input'];
    $_SESSION['lettersGuessed'][] = $userLetter;    
    print_r($_SESSION['lettersGuessed']);
}

if (strlen($_GET['input']) == 1) {
    if (ctype_lower($_GET['input'])) {
        echo "The user-submitted letter is lowercase.<br>";
        example();
    } else {
        echo "Invalid submission<br>";
    }
}
?>
<form action="" method="get">
    <input name="input" value="Enter a letter!" />
    <input type="submit" value="Submit" />
</form>

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM