我有一组这样的文本框:
<input type="text" name="tbxt[]" />
<input type="text" name="tbxt[]" />
<input type="text" name="tbxt[]" />
我正在使用
foreach ($_POST['tbxt'] as $tbxt) {
//
}
但是,例如,如果我有:
<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>
我可以写这样的东西:
foreach (($_POST['tbxt'] as $tbxt) && ($_POST['selxt'] as $selxt)) {
//
}
这可能吗?
答案 0 :(得分:8)
看起来像SPL Multiple iterators:
的情况$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;
....
}
虽然这里使用list()
需要PHP&gt; = 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;
....
}
或
$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;
....
}
答案 1 :(得分:1)
如果您愿意使用for
代替foreach
,则可以执行以下操作:
$tbxt = $_POST['tbxt'];
$selxt = $_POST['selxt']
for ($i=0; $i<sizeof($tbxt); $i++) {
//access them using $tbxt[$i] and $selxt[$i]
}