在数组循环中恢复POST

时间:2016-07-13 11:53:58

标签: php arrays loops foreach while-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>';
}

有人知道这是怎么做到的吗?

3 个答案:

答案 0 :(得分:0)

不要输入'tel_03'这样的输入名称,而是输入名称'tel []'。这将产生一系列输入。现在$ _POST ['tel']将为您提供包含所有值的数组。并且在该循环内部传递其他变量的键,例如$ _POST ['id'] [$ key],这将为您提供与$ _POST ['tel'] [$ key]相关联的值。 Bcoz在您生成该表单时出现在同一行中。

答案 1 :(得分:0)

JavaWindow

替换上面的代码。

在您的接收文件中,只需打印$ _POST即可。您将获得分组数据。

答案 2 :(得分:0)

刚刚解决,而是使用foreach我使用了for。使用某些代码访问array,然后voilà

 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:

感谢大家帮助我。 (: