Есть элемент с несколькими значениями, такой как checkbox или select, но PHP видит только одно значение.
Вставьте квадратные скобки ([ ]) после имени переменной:
<input type="checkbox" name="boroughs[]" value="bronx"> The Bronx
<input type="checkbox" name="boroughs[]" value="brooklyn"> Brooklyn
<input type="checkbox" name="boroughs[]" value="manhattan"> Manhattan
<input type="checkbox" name="boroughs[]" value="queens"> Queens
<input type="checkbox" name="boroughs[]" value="statenisland"> Staten Island
В тексте программы рассматривайте эту переменную как массив:
print 'I love ' . join(' and ', $boroughs) . '!';
Размещение квадратных скобок после имени переменной приказывает PHP считать переменную массивом, а не скалярной переменной. Когда PHP видит, что этой переменной присваивается другое значение, он автоматически увеличивает размер массива и размещает новое значение в конце этого массива. Выбор первых трех пунктов в разделе «Решение» был бы эквивалентен следующему коду в начале сценария:
$boroughs[] = "bronx";
$boroughs[] = "brooklyn";
$boroughs[] = "manhattan";
Следующий фрагмент можно использовать для получения из базы данных информации, которая отражает несколько записей:
foreach ($_GET['boroughs'] as $b) {
$boroughs[] = strtr($dbh->quote($b),array('_' => '\_', '%' => '\%'));
}
$locations = join(',', $boroughs);
$dbh->query("SELECT address FROM locations WHERE borough IN ($locations)");
Этот синтаксис работает также с многомерными массивами:
<input type="checkbox" name="population[NY][NYC]" value="8008278">New York...
Если элемент отмечен, то он устанавливает элемент массива $population['NY']['NYC'] в 8008278.
Размещение квадратных скобок [] после имени переменной может вызвать проблемы в JavaScript при попытке обратиться к элементам.
Вместо обращения к элементам по имени используйте числовой идентификатор. Можно также поместить имя элемента в одинарные кавычки. Другой путь состоит в том, чтобы присвоить элементу идентификатор; можно взять имя без квадратных скобок [], а затем использовать этот идентификатор. Дано:
<form>
<input type="checkbox" name="myName[]" value="myValue" id="myName">
</form>
следующие три конструкции относятся к одному и тому же элементу формы:
document.forms[0].elements[0]; // использование числового
идентификатора
document.forms[0].elements['myName[]']; // использование имени
в кавычках
document.forms[0].elements['myName']; // использование идентификатора,
назначенного вами