Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Mengendalikan Medan Borang Berbilang dengan Nama yang Sama dalam PHP?
Mengendalikan Medan Borang dengan Atribut Nama Sama dalam PHP
Dalam PHP, apabila menyerahkan borang dengan berbilang medan input yang berkongsi atribut nama yang sama, timbul satu tingkah laku yang pelik. Hanya nilai medan terakhir dengan nama itu akan tersedia dalam tatasusunan $_POST. Ini boleh menjadi halangan yang ketara apabila cuba mendapatkan semula nilai semua medan dengan nama yang sama.
Menanggap Di Sebalik Gelagat
PHP menghuraikan rentetan pertanyaan mentah untuk diisi tatasusunan $_POST, menimpa sebarang nilai sedia ada dengan nama yang sama. Oleh itu, apabila ia menemui berbilang medan dengan nama yang sama, hanya yang terakhir direkodkan.
Nama Medan Berstruktur Tatasusunan
Untuk membetulkan isu ini, adalah disyorkan untuk memberikan nama berstruktur tatasusunan kepada setiap medan input. Sebagai contoh, daripada menamakan mereka "foo" dan "bar," anda boleh menggunakan "foo[]" dan "bar[]". Perubahan ini akan mencipta tatasusunan dalam $_POST dengan kuncinya ialah nama biasa dan nilainya disimpan dalam tatasusunan.
Contoh Kod Menggunakan Nama Medan Berstruktur Tatasusunan
<form method="post"> <input name="a[]" value="foo"/> <input name="a[]" value="bar"/> <input name="a[]" value="baz"/> <input type="submit" /> </form>
Dalam contoh ini, $_POST['a'] ialah tatasusunan yang mengandungi ["foo", "bar", "baz"].
Mengakses Rentetan Pertanyaan Mentah
Sebagai alternatif, jika anda memerlukan akses kepada rentetan pertanyaan mentah, anda boleh menggunakan file_get_contents('php:/ /input') fungsi. Ini akan memberikan anda keseluruhan rentetan, yang kemudian anda boleh menghuraikan sendiri.
Kod Contoh untuk Menghuraikan Rentetan Pertanyaan Mentah
$post = array(); foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) { list($key, $value) = explode('=', $keyValuePair); $post[$key][] = $value; }
Kod ini akan mencipta tatasusunan dengan setiap nama dipetakan kepada tatasusunan nilai, menyelesaikan isu berbilang medan dengan atribut nama yang sama.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Medan Borang Berbilang dengan Nama yang Sama dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!