在阵列循环中恢复开机自检


Recover POST in array loop

我有一个表格,周围有 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:

谢谢大家对我的帮助。(: