Как исключитьиз для каждого цикла в PHP - PullRequest
1 голос
/ 20 марта 2012

У меня есть HTML-форма, которая выглядит следующим образом:

<form action="index.php" method="post">
<input type="hidden" value="Hidden Value" name="A Hidden Value" />
<select name="dropdownOption">
  <option value="First Choice +200">First Choice</option>
  <option value="Second Choice +300">Second Choice</option>
</select>
<p><input type="checkbox" value="Rocket +100"> Rocket</p>
</form>

Я перебираю значения этой формы следующим образом:

 foreach($_POST as $key => $value) {

 }

Как бы исключить скрытыевходные данные из цикла foreach?

Следует отметить, что все версии PHP поддерживают пробелы во входном имени (например, допустимо?). В моей версии PHP он автоматически заменяет пробелы подчеркиванием, что прекрасно,это делает это для всех версий PHP?

Спасибо за любую помощь.

Ответы [ 3 ]

3 голосов
/ 20 марта 2012

Нет способа различить различные типы полей ввода HTML в php. Я бы предложил использовать какой-то префикс или другой идентификатор в именах ваших скрытых полей. Затем вы можете проверить, присутствует ли этот префикс в имени ваших полей в цикле. Вы могли бы сделать

if (strpos($key, 'hdn_') === false) // proceed 
1 голос
/ 20 марта 2012
  1. Избегайте использования пробелов в идентификаторах.
  2. Если вы просто хотите «отфильтровать» поля hidden, попробуйте следующее:

<?php
// the not-hidden ones
$allowed_field_names = array("some_field", "another_field"); 

// Now, we're going to 'filter' the "hidden" fields
// The rest (the "allowed" ones are stored in $newPost
$newPost = array_intersect_key($_POST, array_flip($allowed_field_names));

foreach ($newPost as $key=>$value)
{
     // Do sth
}
?>
0 голосов
/ 20 марта 2012

Нет встроенного способа сделать то, что вы просите. Вот где «программирование» вступает в игру.
Один из способов решить эту проблему - передать то, что вы положили в скрытые элементы в GET.
То есть добавьте его к атрибуту action элемента формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...