[英]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.