我有一个表格,周围有 10 多行,每行都有 3 或 4 个带有动态名称的隐藏输入。像id_01、id_02、id_03和name_01_、name_02、name_03......
在 foreach 循环中提交表单后,我正在将 $_POST 恢复为数组。并得到这个结果:
- id_01
- name_02
- tel_03
- id_04
- name_05
- tel_06
- id_07
- name_08
- tel_09
但是我需要获得"分组"结果:
- id_01
- name_01
- tel_01
。
- id_02
- name_02
- tel_02
这是我在表单提交之前的代码:
$i = 0;
foreach ($apiResponse['response']['data']['data'] as $data) {
echo "<tr>";
echo "<td align='center'>" . $data['Offer']['name'] . "</td>";
echo "<td align='center'>" . $data['Stat']['affiliate_id'] . "<input type='hidden' name='aff_id_" . $i++ . "' value='" . $data['Stat']['affiliate_id'] . "'></td>";
echo "<td align='center'>" . $data['Stat']['conversions'] . "</td>";
echo "<td align='center'>" . number_format(@($data['Stat']['payout']/$data['Stat']['conversions']),2,'.','.') . "<input type='hidden' value='" . number_format(@($data['Stat']['payout']/$data['Stat']['conversions']),2,'.','.') . "' name='payout_" . $i++ . "'></td>";
echo "<td align='center'>" . number_format(@($data['Stat']['revenue']/$data['Stat']['conversions']),2,'.','.') . "<input type='hidden' value='" . number_format(@($data['Stat']['revenue']/$data['Stat']['conversions']),2,'.','.') . "' name='revenue_" . $i++ . "'></td>";
echo "<td align='center'><input size='2 type='text' name='invalidar_" . $i++ . "'></tr>";
}
这就是我恢复的方式:
foreach($_POST as $key => $value) {
echo '<li>'. $key . ': '. $value . '</li>';
}
有人知道这是怎么做到的吗?
不要给出像"tel_03"这样的输入名称,而是给出名称"tel[]"。这将产生输入数组。现在 $_POST['tel'] 将为您提供包含所有值的数组。在该循环中传递其他变量的密钥,例如 $_POST['id'][$key],这将为您提供与 $_POST['tel'][$key] 相关的值。因为它们在您生成该表单时出现在同一行中。
$i = 0;
foreach ($apiResponse['response']['data']['data'] as $data)
{
echo "<tr>";
echo "<td align='center'>" . $data['Offer']['name'] . "</td>";
echo "<td align='center'>" . $data['Stat']['affiliate_id'] . "<input type='hidden' name='info[".$i."]['id']' value='" . $data['Stat']['affiliate_id'] . "'></td>";
echo "<td align='center'>" . $data['Stat']['conversions'] . "</td>";
echo "<td align='center'>" . number_format(@($data['Stat']['payout']/$data['Stat']['conversions']),2,'.','.') . "<input type='hidden' value='" . number_format(@($data['Stat']['payout']/$data['Stat']['conversions']),2,'.','.') . "' name='info[".$i."]['payout']'></td>";
echo "<td align='center'>" . number_format(@($data['Stat']['revenue']/$data['Stat']['conversions']),2,'.','.') . "<input type='hidden' value='" . number_format(@($data['Stat']['revenue']/$data['Stat']['conversions']),2,'.','.') . "' name='info[".$i."]['revenue']'></td>";
echo "<td align='center'><input size='2 type='text' name='invalidar_" . $i++ . "'></tr>";
}
替换上面的代码。
在您的接收文件中,只需打印 _POST 美元。您将获得分组的数据。
刚刚解决,而是使用我for
使用foreach
.用一些编码来array
,瞧。
for ($i = 0, $size = count($apiResponse['response']['data']['data']); $i < $size; ++$i) {
echo "<tr>";
echo "<td align='center'>" . $apiResponse['response']['data']['data'][$i]['Offer']['name'] . "<input type='hidden' name='info[".$i."][offer_id]' value='" . $apiResponse['response']['data']['data'][$i]['Stat']['offer_id'] . "'></td>";
echo "<td align='center'>" . $apiResponse['response']['data']['data'][$i]['Stat']['affiliate_id'] . "<input type='hidden' name='info[".$i."][aff_id]' value='" . $apiResponse['response']['data']['data'][$i]['Stat']['affiliate_id'] . "'></td>";
echo "<td align='center'>" . $apiResponse['response']['data']['data'][$i]['Stat']['conversions'] . "</td>";
echo "<td align='center'>" . number_format(@($apiResponse['response']['data']['data'][$i]['Stat']['payout']/$apiResponse['response']['data']['data'][$i]['Stat']['conversions']),2,'.','.') . "<input type='hidden' value='" . number_format(@($apiResponse['response']['data']['data'][$i]['Stat']['payout']/$apiResponse['response']['data']['data'][$i]['Stat']['conversions']),2,'.','.') . "' name='info[".$i."][payout]'></td>";
echo "<td align='center'>" . number_format(@($apiResponse['response']['data']['data'][$i]['Stat']['revenue']/$apiResponse['response']['data']['data'][$i]['Stat']['conversions']),2,'.','.') . "<input type='hidden' value='" . number_format(@($apiResponse['response']['data']['data'][$i]['Stat']['revenue']/$apiResponse['response']['data']['data'][$i]['Stat']['conversions']),2,'.','.') . "' name='info[".$i."][revenue]'></td>";
echo "<td align='center'><input size='2 type='text' name='info[".$i."][invalidar]'></tr>";
}
结果是:
<tr role="row" class="odd"><td align="center" class="sorting_1">Aasha - IN<input type="hidden" name="info[627][offer_id]" value="1048"></td><td align="center">1448<input type="hidden" name="info[627][aff_id]" value="1448"></td><td align="center">0</td><td align="center">0.00<input type="hidden" value="0.00" name="info[627][payout]"></td><td align="center">0.00<input type="hidden" value="0.00" name="info[627][revenue]"></td><td align="center"><input size="2 type=" text'="" name="info[627][invalidar]"></td></tr>
提交后,我使用foreach
恢复:
$i = 0;
foreach($_POST['info'] as $key => $array) {
echo $i++;
echo '<br>';
echo 'Offer ID:';
echo $array['offer_id'];
echo '<br>';
echo 'Affiliate ID:';
echo $array['aff_id'];
echo '<br>';
echo 'Revenue:';
echo $array['revenue'];
echo '<br>';
echo 'Payout:';
echo $array['payout'];
echo '<br>';
echo 'Invalidar:';
echo $array['invalidar'];
echo '<br><br>';
sleep(2);
}
最后我的结果分组:
0
Offer ID:1048
Affiliate ID:1448
Revenue:0.00
Payout:0.00
Invalidar:
1
Offer ID:1048
Affiliate ID:1505
Revenue:1.44
Payout:0.72
Invalidar:
2
Offer ID:1048
Affiliate ID:1501
Revenue:1.44
Payout:0.72
Invalidar:
3
Offer ID:1048
Affiliate ID:1565
Revenue:1.44
Payout:1.12
Invalidar:
4
Offer ID:577
Affiliate ID:1026
Revenue:0.00
Payout:0.00
Invalidar:
5
Offer ID:1050
Affiliate ID:1565
Revenue:0.00
Payout:0.00
Invalidar:
6
Offer ID:1050
Affiliate ID:1501
Revenue:0.00
Payout:0.00
Invalidar:
7
Offer ID:1050
Affiliate ID:1505
Revenue:0.00
Payout:0.00
Invalidar:
8
Offer ID:1317
Affiliate ID:2
Revenue:0.00
Payout:0.00
Invalidar:
9
Offer ID:1317
Affiliate ID:1352
Revenue:10.84
Payout:7.22
Invalidar:
谢谢大家对我的帮助。(: