Eğer bir PHP dosyası ve yinelenen ad özellikleri ile formda metin girişleri vardır mesajları, hala $ _POST diziden hem de alanların değerlerini elde etmek mümkün olacak bir form varsa?
Hayır Yalnızca son giriş elemanı kullanılabilir olacaktır.
Eğer giriş isim özniteliği için aynı ad kullanımı name="foo[]" ile çoklu giriş istiyorsanız. $_POST sonra giriş elemanları tüm değerler Foo'ları için bir dizi içerecektir.
<form method="post">
<input name="a[]" value="foo"/>
<input name="a[]" value="bar"/>
<input name="a[]" value="baz"/>
<input type="submit" />
</form>
HTML reference at Sitepoint bakın.
PHP temelde sadece patlayacak ve ham sorgu dize üzerinde foreach doldurmak çünkü [] kullanmak istemiyorsanız nedeni $_POST sadece son değeri içerecek {[(0) }]. Zaten var olan bir ad / değer çifti karşılaştığında, önceki olanın üzerine yazacaktır.
Ancak, yine de hala bu gibi ham sorgu dizesi erişebilirsiniz yapabilirsiniz:
$rawQueryString = file_get_contents('php://input'))
Eğer böyle bir formu var varsayarsak:
<form method="post">
<input type="hidden" name="a" value="foo"/>
<input type="hidden" name="a" value="bar"/>
<input type="hidden" name="a" value="baz"/>
<input type="submit" />
</form>
$ rawQueryString ardından içerecektir a=foo&a=bar&a=baz.
Daha sonra bir diziye bu ayrıştırmak için kendi mantığı kullanabilirsiniz. Saf bir yaklaşım olacaktır
$post = array();
foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) {
list($key, $value) = explode('=', $keyValuePair);
$post[$key][] = $value;
}
o zaman sorgu dizesi her isim için dizilerin bir dizi verecek olan.
Bunun yerine name="nfo[val]" sadece name="nfo[val][]" ve PHP bir foreach() kullanabilirsiniz kullanacağınız
HTML kodu:
<form method="post">
<input name="nfo[val][]" value="val1"/>
<input name="nfo[val][]" value="val2"/>
<input name="nfo[val][]" value="val3"/>
<input type="submit" />
</form>
PHP kodu:
$output='';
foreach ($nfo['val'] as $key=>$val) {
$output.= $val.", ";
}
$output olacaktır: val1, val2, val3
Bu yardımcı olur umarım!