如何遍历 PHP 中的 $_POST 数组
How to iterate through $_POST arrays in PHP
我正在使用 FPDF 库,并且正在尝试动态创建一个新单元格。我的 HTML 中有一组输入字段,它们都具有相同的名称属性,看起来像这个名称="field[0][]"。如果用户生成第二个组,那么他们的名称属性将看起来像这样 name="field[1][]" 等等。这是 HTML:
<div class="new">
<input name="field[0][]" class="description" type="text" maxlength="255" placeholder="Enter Description" value=""/>
<input name="field[0][]" data-rate="rate" class="rate qty" type="text" maxlength="255" placeholder="0" size="5" value=""/>
<input name="field[0][]" data-price="price" class="pack price" type="text" maxlength="255" placeholder="$ 0.00" size="5" value=""/>
<input name="field[0][]" id="amount" class="amount" type="text">
</div>
在 PHP 中,我有一个 foreach 循环,它从 name="field[0][]" 获取所有值并将它们注入 FPDF 单元格,这是我的代码。
$width_array = array(100, 25, 25, 0);
$pos_array = array(0, 0, 0, 1);
$align_array = array('L', 'C', 'L', 'L');
foreach ($_POST['field'][0] as $key => $description) {
$pdf->Cell($width_array[$key],10, "{$description}", 1, $pos_array[$key], $align_array[$key]);
}
到目前为止,这对于一组具有相同名称属性的输入来说看起来不错,但是如果我有更多的输入集,比如示例 $_POST['field'][1],我该如何动态生成更多的单元格呢? $_POST['field'][2] 等。我知道如果我添加另一个 foreach 循环并更改数组编号,它将显示下一个字段,但这是错误的,它必须动态生成。
foreach ($_POST['field'][1] as $key => $description) {
$pdf->Cell($width_array[$key],10, "{$description}", 1, $pos_array[$key], $align_array[$key]);
}
这个$_POST['field'][0]可以加一个吗?然后在 foreach 循环中使用它 ?
问题是PHP还是HTML?
HTML你可以通过JS解决。因此,您只需要保存索引,每次有人添加一个块时,您都会增加索引。这样您就可以动态创建 HTML 代码。
PHP 你只需要将 2 个 foreach 放在一起:
foreach ($_POST['field'] as $dataArray) {
foreach ($dataArray as $key => $description) {
$pdf->Cell($width_array[$key],10, "{$description}", 1, $pos_array[$key], $align_array[$key]);
}
}
我正在使用 FPDF 库,并且正在尝试动态创建一个新单元格。我的 HTML 中有一组输入字段,它们都具有相同的名称属性,看起来像这个名称="field[0][]"。如果用户生成第二个组,那么他们的名称属性将看起来像这样 name="field[1][]" 等等。这是 HTML:
<div class="new">
<input name="field[0][]" class="description" type="text" maxlength="255" placeholder="Enter Description" value=""/>
<input name="field[0][]" data-rate="rate" class="rate qty" type="text" maxlength="255" placeholder="0" size="5" value=""/>
<input name="field[0][]" data-price="price" class="pack price" type="text" maxlength="255" placeholder="$ 0.00" size="5" value=""/>
<input name="field[0][]" id="amount" class="amount" type="text">
</div>
在 PHP 中,我有一个 foreach 循环,它从 name="field[0][]" 获取所有值并将它们注入 FPDF 单元格,这是我的代码。
$width_array = array(100, 25, 25, 0);
$pos_array = array(0, 0, 0, 1);
$align_array = array('L', 'C', 'L', 'L');
foreach ($_POST['field'][0] as $key => $description) {
$pdf->Cell($width_array[$key],10, "{$description}", 1, $pos_array[$key], $align_array[$key]);
}
到目前为止,这对于一组具有相同名称属性的输入来说看起来不错,但是如果我有更多的输入集,比如示例 $_POST['field'][1],我该如何动态生成更多的单元格呢? $_POST['field'][2] 等。我知道如果我添加另一个 foreach 循环并更改数组编号,它将显示下一个字段,但这是错误的,它必须动态生成。
foreach ($_POST['field'][1] as $key => $description) {
$pdf->Cell($width_array[$key],10, "{$description}", 1, $pos_array[$key], $align_array[$key]);
}
这个$_POST['field'][0]可以加一个吗?然后在 foreach 循环中使用它 ?
问题是PHP还是HTML?
HTML你可以通过JS解决。因此,您只需要保存索引,每次有人添加一个块时,您都会增加索引。这样您就可以动态创建 HTML 代码。
PHP 你只需要将 2 个 foreach 放在一起:
foreach ($_POST['field'] as $dataArray) {
foreach ($dataArray as $key => $description) {
$pdf->Cell($width_array[$key],10, "{$description}", 1, $pos_array[$key], $align_array[$key]);
}
}