Массив элементов HTML, имя="что-то[]" или имя="что-то"?


Я кое-что видел на этом сайте : Обработка массива элементов HTML-формы в JavaScript и PHP http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=343

В нем говорилось о том, чтобы поместить массив в свойство name и как получить значение входной коллекции. например. name="education[]"

Но, как я знаю, элемент ввода HTML готов к массиву name. На стороне клиента (GetElementsByName) или на стороне сервера ($_POST в PHP или Request.Form в ASP.NET) например: name="education", так в чем же разница с или без []?

 29
Author: aksu, 2011-01-14

3 answers

PHP использует синтаксис квадратных скобок для преобразования входных данных формы в массив, поэтому при использовании name="education[]" вы получите массив, когда сделаете это:

$educationValues = $_POST['education']; // Returns an array
print_r($educationValues); // Shows you all the values in the array

Так, например:

<p><label>Please enter your most recent education<br>
    <input type="text" name="education[]">
</p>
<p><label>Please enter any previous education<br>
    <input type="text" name="education[]">
</p>
<p><label>Please enter any previous education<br>
    <input type="text" name="education[]">
</p>

Выдаст вам все введенные значения внутри массива $_POST['education'].

В JavaScript более эффективно получать элемент по идентификатору...

document.getElementById("education1");

Идентификатор не обязательно должен совпадать с именем:

<p><label>Please enter your most recent education<br>
   <input type="text" name="education[]" id="education1">
</p>
 43
Author: user75525, 2014-02-22 14:11:13

Если у вас есть флажки, вы можете передать массив проверенных значений.

<input type="checkbox" name="fruits[]" value="orange"/>
<input type="checkbox" name="fruits[]" value="apple"/>
<input type="checkbox" name="fruits[]" value="banana"/>

Также несколько раскрывающихся списков выбора

<select name="fruits[]" multiple>
    <option>apple</option>
    <option>orange</option>
    <option>pear</option>
</select>
 14
Author: sissonb, 2011-01-14 07:39:44

Все по-другому. если вы опубликуете эту форму:

<input type="text" name="education[]" value="1">
<input type="text" name="education[]" value="2">
<input type="text" name="education[]" value="3">

Вы получите массив в PHP, в этом примере вы получите $_POST['education'] = [1, 2, 3].

Если вы разместите эту форму без []:

<input type="text" name="education" value="1">
<input type="text" name="education" value="2">
<input type="text" name="education" value="3">

Вы получите последнее значение, здесь вы получите $_POST['education'] = 3.

 9
Author: Galley, 2017-03-23 07:40:25