首頁  >  文章  >  後端開發  >  如何在 PHP 中處理同名的多個表單欄位?

如何在 PHP 中處理同名的多個表單欄位?

Barbara Streisand
Barbara Streisand原創
2024-11-23 04:19:25158瀏覽

How Can I Handle Multiple Form Fields with the Same Name in PHP?

在PHP 中處理具有相同名稱屬性的表單欄位

在PHP 中,當提交具有多個共享相同名稱屬性的輸入欄位的表單時,出現一種奇怪的行為。 $_POST 陣列中只有具有該名稱的最後一個欄位的值可用。當嘗試檢索具有相同名稱的所有欄位的值時,這可能是一個重大障礙。

行為背後的原因

PHP 解析原始查詢字串以填充$_POST 數組,覆蓋任何現有的同名值。因此,當遇到多個同名欄位時,只記錄最後一個。

陣列結構欄位名稱

建議修正此問題為每個輸入欄位指派一個陣列結構名稱。例如,您可以使用“foo[]”和“bar[]”,而不是將它們命名為“foo”和“bar”。此變更將在 $_POST 中建立一個數組,其中鍵是通用名稱,值儲存在數組中。

使用陣列結構欄位名稱的範例程式碼

<form method="post">
    <input name="a[]" value="foo"/>
    <input name="a[]" value="bar"/>
    <input name="a[]" value="baz"/>
    <input type="submit" />
</form>

在此範例中,$_POST['a'] 將是一個包含["foo", "bar", "baz"].

存取原始查詢字串

或者,如果您需要存取原始查詢字串,您可以使用file_get_contents('php:/ /輸入')功能。這將為您提供整個字串,然後您可以自己解析該字串。

解析原始查詢字串的範例程式碼

$post = array();
foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) {
    list($key, $value) = explode('=', $keyValuePair);
    $post[$key][] = $value;
}

此程式碼將建立一個陣列將每個名稱對應到一個值數組,解決多個欄位具有相同名稱屬性的問題。

以上是如何在 PHP 中處理同名的多個表單欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn