loc*_*ock 2 html php arrays foreach
我有一组这样的文本框:
<input type="text" name="tbxt[]" />
<input type="text" name="tbxt[]" />
<input type="text" name="tbxt[]" />
Run Code Online (Sandbox Code Playgroud)
我正在使用
foreach ($_POST['tbxt'] as $tbxt) {
//
}
Run Code Online (Sandbox Code Playgroud)
但是,例如,如果我有:
<input type="text" name="tbxt[]" /><select name="selxt[]"></select>
<input type="text" name="tbxt[]" /><select name="selxt[]"></select>
<input type="text" name="tbxt[]" /><select name="selxt[]"></select>
Run Code Online (Sandbox Code Playgroud)
所以我可以这样写:
foreach (($_POST['tbxt'] as $tbxt) && ($_POST['selxt'] as $selxt)) {
//
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
看起来像SPL 多个迭代器的情况:
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($_POST['tbxt']));
$mi->attachIterator(new ArrayIterator($_POST['selxt']));
foreach($mi as list($tbxt, $selxt)) {
echo $tbxt, ' ', $selxt, PHP_EOL;
....
}
Run Code Online (Sandbox Code Playgroud)
虽然使用list()这里需要PHP> = 5.5.0
您可以通过为每个迭代器分配一个名称,然后在循环中提取来在早期版本中模拟它:
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($_POST['tbxt']), 'tbxt');
$mi->attachIterator(new ArrayIterator($_POST['selxt']), 'selxt');
foreach($mi as $lists) {
extract($lists);
echo $tbxt, ' ', $selxt, PHP_EOL;
....
}
Run Code Online (Sandbox Code Playgroud)
要么
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($_POST['tbxt']), 'tbxt');
$mi->attachIterator(new ArrayIterator($_POST['selxt']), 'selxt');
foreach($mi as $lists) {
echo $lists['tbxt'], ' ', $lists['selxt'], PHP_EOL;
....
}
Run Code Online (Sandbox Code Playgroud)