【问题标题】:$_POST multidemensional array looping$_POST 多维数组循环
【发布时间】:2010-08-11 21:05:35
【问题描述】:

所以我创建了一个表单,通过 post 函数向我发送几个值。 $_POST[groups] 发送给我,使用 4 个不同的复选框值 1、2、4 和 8。 $_POST[retailgroup] 做同样的事情,但只有值 1、2 和 4。 问题是我希望这些加在一起,然后将值的总和发送到 MySQL 表。 我已经设法使用以下 foreach 循环来做一个:

foreach ( $_POST as $val ) {
    foreach ( $val as $key=>$final_val ) {
        $group = $group+$final_val;
    }
}

当我需要将这两者分开时,问题就开始了,因为它们将进入表中的单独列。

为了清楚起见,我为不同的组分配了不同的值(总是取 prev 值乘以 2,就像计数二进制一样),例如 1、2、4 和 8。通过将它们加在一起,我可以通过以下方式确定组中的成员资格减法“向后”。由于有不同类型的组,我希望将它们放入表的两个单独字段中。

我希望一切都清楚。

你知道怎么做吗?

【问题讨论】:

    标签: php arrays foreach multidimensional-array


    【解决方案1】:

    你想使用:

    $groups_sum = array_sum($_POST['groups']);
    $rgroups_sum = array_sum($_POST['retailgroups']);
    

    在这种情况下,这将比 foreach 循环更快、更清晰。

    【讨论】:

    • 你领先我几秒。
    【解决方案2】:

    试试

    foreach ( $_POST[groups] as $key=>$final_val ) {
       //do stuff for first group
    }
    foreach ( $_POST[retailgroup] as $key=>$final_val ) {
       //do stuff for second group
    }
    

    然后你可以用从循环中得到的变量来做任何你想要的事情

    【讨论】:

      【解决方案3】:
      $groups = array_sum($_POST['groups']);
      $retailGroups = array_sum($_POST['retailgroup']);
      

      您可以像这样检查成员资格,而不是向后减去:

      $groupAdmin = 4;
      if($groups & $groupAdmin) {
          // is admin
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-30
        • 2013-06-25
        • 2015-06-02
        • 2019-07-17
        • 2012-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多