大約2個小時我正在努力解決這個問題。 我想將$ _POST變量插入$ _SESSION數組中,並將從表單發送的每個新數據附加到會話變量。 現在,當我將會話變量定義爲數組時,我是這樣說的嗎?
$ _SESSION ['name'];
或這樣
$ _SESSION [ '名稱'] =陣列();
我有兩個POST變量,我想插入每一個會話中的陣列。
這裏是形式:
<form action="action.php" method="POST" >
<label>Moovie name: <input type="text" name="name" /></label><br />
<label>Price: <input type="text" name="price" /></label><br />
<input type="submit" value="Send" />
</form>
這裏是action.php的
<?php
session_start();
$_SESSION['name'] = array();
$_SESSION['price'] = array();
$name = $_POST['name'];
$price = $_POST['price'];
array_push($_SESSION['name'], $name);
array_push($_SESSION['price'], $price);
print_r($_SESSION['name']);
echo "<br>";
print_r($_SESSION['price']);
?>
注: 如果我說
$_SESSION['name']; instead of $_SESSION['name'] = array();
我得到警告:array_push()預計參數1是數組,在action.php中給出null null同樣,$ _SESSION ['name']是從一開始的數組?
檢查['is_array'](http://www.php.net/manual/en/function.is -array.php),如果沒有,那麼將它們設置爲數組並繼續,如果它已經被初始化,'= array()'代碼將不會被運行,所以你不會將它清空。 (或者,與PHP的工作方式一樣,你可以簡單地使用'$ _SESSION ['name'] [] = $ name;'etc等等,如果它不是一個數組,它將被設置爲一個。) – Jon 2013-03-17 11:38:18
@Jon ''is_array()'仍然會觸發一個通知,這個鍵根本就不存在,同樣使用'isset()'來代替:if(!isset($ _ SESSION ['name'])){$ _SESSION [ 'name'] = array(); }' – DaveRandom 2013-03-17 11:42:29