簡體   English   中英

如何在插入時將值推入數組以及增加數組索引?

[英]How to push values into an array along with incrementing the array index while inserting?

我有一個我想要的數組,每當我提交表單時,每次都會用新的遞增索引將插入值插入到該數組中。我該怎么做? 是的,提交頁面被重定向到其自身...

在PHP中:

$arr[] = value;
$arr[] = other value;

在HTML中:

<input type="text" name="arr[]" />
<input type="text" name="arr[]" />

您可以使用會話變量解決此問題。 這樣,數據將不會被覆蓋。 這是一個例子:

$_SESSION['formdata'][] = $_POST['value1'];
$_SESSION['formdata'][] = $_POST['value2'];

重新加載腳本后,數據仍然可用,將其他值推入數組將不會覆蓋舊值。 您只需再做一次:

$_SESSION['formdata'][] = $_POST['value3'];
$_SESSION['formdata'][] = $_POST['value4'];

現在調用$ _SESSION ['formdata']-Array,您將在其中存儲所有4個值。

**編輯**我終於回到家了,並保證我會提供另一種使用cookie的解決方案,因為正如我們已經討論過的那樣,會話對您不起作用。 所以我們開始...

首先,我們需要考慮我們命名cookie的方式。 我建議我們使用ip-address和任何后綴來執行此操作,以確保確實是用戶,已經填寫了以前的表格。

這樣我們就可以這樣:

$dataArray[] = $_POST['value1'];
$dataArray[] = $_POST['value2'];

然后,我們需要將數據存儲到cookie中。 我們不想序列化數組,因為我們不想保存數百個cookie。 這將像這樣工作:

$cookievalue = serialize($dataArray);

// Here we actually generate a cookiename in the format of "IP_formdata"
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue);

到現在為止還挺好。 在下一個表單中,我們檢索cookie數據並反序列化數據,因此我們可以擴展此數組:

$dataArray = unserialize($_COOKIE[$_SERVER['REMOTE_ADDR'] . '_formdata');

現在我們可以從第二種形式向數組添加其他值:

$dataArray[] = $_POST['value3'];
$dataArray[] = $_POST['value4'];

在將所有其他值都放入此數組之后,我們再次對其進行序列化,然后再次將其存儲到該數組中:

$cookievalue = serialize($dataArray);
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue);

現在,我們可以對所有其他表格重復此步驟。 只需記住,如果要使用數據,首先必須對數據進行反序列化並將其存儲到數組中。

而且請不要忘記我在評論中已經說過的:用戶可以關閉cookie,那么整個過程將無法進行。 您還可以添加一些其他檢查,以驗證這是正確的用戶還是其他用戶。 我尚未測試代碼,但我認為它應該以這種方式工作,希望我能為您提供幫助或至少給您一個提示:)

暫無
暫無

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

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