Я получил эту форму:
<form method="post" action="" accept-charset="utf-8"> <p> <label>first_field</label><br /> <input type="text" id="first_field" name="points[]" /><br /> <input type="radio" value="inside" name="group_1" checked /><br /> <input type="radio" value="outside" name="group_1"><br /> </p> <p> <label>second_field</label><br /> <input type="text" id="second_field" name="points[]" /><br /> <input type="radio" value="inside" name="group_2" checked /><br /> <input type="radio" value="outside" name="group_2"><br /> </p> </form>
То, что я хочу выполнить, – проверить, проверено ли внутри или снаружи, если снаружи я проверил точки умножения для данного ввода текста на 1,5. Кстати, это нужно рассчитать в PHP.
Как я могу это сделать?
Array ( [bonus] => Array ( [points] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 ) [group] => Array ( [0] => inside [1] => outside [2] => outside [3] => inside [4] => inside [5] => inside [6] => inside [7] => inside [8] => outside [9] => inside [10] => inside [11] => inside [12] => outside [13] => inside [14] => inside ) ) )
Выше результат print_r ($ _ POST)
Теперь ho я сравниваю / pare Массив точек с массивом Group, поэтому:
точки [0] «связаны» с группой [0] и т. д.?
Как оказалось, вы можете группировать поля с помощью HTML-форм. Проверьте этот код здесь: (особенно обратите внимание на атрибуты name
)
<form method="post" action="" accept-charset="utf-8"> <p> <label>first_field</label><br /> <input type="text" id="first_field" name="field[1][points]" /><br /> <input type="radio" value="inside" name="field[1][group]" checked /><br /> <input type="radio" value="outside" name="field[1][group]"><br /> </p> <p> <label>second_field</label><br /> <input type="text" id="second_field" name="field[2][points]" /><br /> <input type="radio" value="inside" name="field[2][group]" checked /><br /> <input type="radio" value="outside" name="field[2][group]"><br /> </p> </form>
Не заполняя ничего, это даст массив POST, например:
Array ( [field] => Array ( [1] => Array ( [points] => [group] => inside ) [2] => Array ( [points] => [group] => inside ) ) )
Надеюсь, это ответ на ваш вопрос, это аккуратный маленький трюк, который я не видел, когда многие другие обсуждали. Следует отметить, что вам нужно вручную указать идентификационный номер в любом наборе скобок. Вы можете использовать только []
в качестве последнего набора скобок.
Я расширяю этот ответ, потому что мне потребовалось некоторое время, чтобы отследить PHP-код, который будет анализировать данные из формы.
Используя этот метод в HTML, вы получите массив пар ключ-значение.
<input type="text" id="first_field" name="field[1][points]" /><br /> <input type="radio" value="inside" name="field[1][group]" checked /><br /> <input type="radio" value="outside" name="field[1][group]"><br />
Вот как я использовал PHP для анализа массива.
foreach ($_POST as $record => $detail) { // The submit button from my HTML form was POSTing data // so I used an if statement to remove it from the result set if(empty($firstRow)) { $firstRow = 1; } else { // since $detail is still an array, you have to loop through it again foreach ($detail as $key => $value) { echo $key."<br/>"; // $key would contain the key value (1 or 2) echo $value['points']."<br/>"; echo $value['group']."<br/><br/>"; } } }
Надеюсь, этот ответ поможет!
Вам просто нужно поймать, что он возвращается в переменной $_POST
, и обработать его. Если после заполнения формы вы выполните var_dump($_POST)
, вам следует лучше понять, что делать.