<html>
<body>
<form>
<input name="sec4[fieldname][]" value="fieldl">
<input name="sec4[othername][]" value="otherr">
<input name="sec4[finalname][]" value="finan">
</form>
</body>
</html>
Это передается через POST/GET/ЗАПРОС на PHP файл:
<?php
session_start();
foreach ($_REQUEST['sec4'] as $outerRowKey => $outerRowVal){
// In this foreach loads all the values
// listed above in the HTML.
// please note the IF clause is simply to only deal with the
// array values and leaves the string values untouched.
if(is_array($outerRowVal)){
foreach ($outerRowVal as $innerRowKey => $innerRowVal){
//In this foreach loads the 'fieldname' or
// 'othername' or 'finalname' arrays in turn
// and saves its data to the session.
$_SESSION['sec4'][$outerRowKey][] = $innerRowVal;
}
unset($innerRowKey,$innerRowVal);
}
}
unset($outerRowKey, $outerRowVal);
Это представит вам структуры в $ _SESSION от:
$_SESSION['sec4']['fieldname'][0] = "fieldl"
$_SESSION['sec4']['fieldname'][1]
$_SESSION['sec4']['fieldname'][2]
$_SESSION['sec4']['fieldname'][...]
$_SESSION['sec4']['othername'][0] = "other"
$_SESSION['sec4']['othername'][1]
$_SESSION['sec4']['othername'][2]
$_SESSION['sec4']['othername'][...]
$_SESSION['sec4']['finalname'][0] = "finan"
$_SESSION['sec4']['finalname'][1]
$_SESSION['sec4']['finalname'][2]
$_SESSION['sec4']['finalname'][...]
Вы можете, конечно, самостоятельно адаптируйте структуру, но ключевой момент заключается в том, что использование синтаксиса []
в конце имени части входа задает его как значение массива и добавляется при отправке в $_POST
/$_REQUEST
массив для использования скриптом PHP. Используя Foreach, вам тогда не нужно заботиться о том, сколько их есть, потому что все они рассматриваются одинаково.
Это намного более аккуратное и аккуратное и удобное решение, чем ручное редактирование значений ключа в числовом цикле. Это также означает, что если вы добавляете или удаляете значения из ввода формы, тогда код PHP все еще работает отлично.
Для того, чтобы ваш код выше и без изменения способа и просто улучшить выполнение кода (а также сделать его более удобным для чтения), попробуйте следующее:
Примечание:это хуже к использованию массивов. Такая проблема заключается в том, какие массивы идеально подходят для обработки.
for ($i = 1; $i <= $_SESSION['ct']; $i++) {
$a = 'sec4_fieldname_' .$i;
$b = 'sec4_othername_' .$i;
$c = 'sec4_finalname_' .$i;
$_SESSION[$a] = $_REQUEST[$a];
$_SESSION[$b] = $_REQUEST[$b];
$_SESSION[$c] = $_REQUEST[$c];
}
unset($a,$b,$c,$i);
Вы должны probablu использовать массивы, поэтому имена входных будет 'имя = "sec4_fieldname []"'. Намного легче. – AbraCadaver
Мне сложно понять контекст этого. Можете ли вы привести пример и объяснение? –
Можете ли вы предоставить пример вывода $ _REQUEST или представленных данных FORM? – Cybot