【问题标题】:Increment Index in $_POST Array$_POST 数组中的增量索引
【发布时间】:2014-09-23 13:38:49
【问题描述】:

我有一段 php 代码,我需要 $_POST 索引在每次通过 "do while" 循环时增加一。换句话说,第一次出现是$_POST['tableserver1'],然后下一个是$_POST['tableserver2'],以此类推。循环6次然后停止。

我尝试使用变量作为索引,试图让它们递增。我在 php 手册 http://php.net/manual/en/language.operators.increment.php 中找到了一个示例,它增加了字符串末尾的数字,但我没有任何运气让它在 $_POST 索引中工作。

这部分代码创建了一组 6 个选择列表,其中包含来自数据库的名称。我正在尝试从$_POST 值中填充选择列表(如果已设置),否则为零。

这是我的代码:

<?php 
    $x = 1;

do {
    ?>
    <blockquote>
        <p><?php echo $x . "."; ?>
            <select name="tableserver<?php echo $x; ?>" id="tableserver<?php echo $x; ?>">
                <option selected value="0" <?php
                if (!(strcmp(0, '$tableserver.$x'))) {
                    echo "selected=\"selected\"";
                }
                ?>>Select Server</option>
                        <?php
                        do {
                            if (strpos($row_getnamesRS['service'], '22') !== false) {
                                ?>
                        <option value="<?php echo $row_getnamesRS['memberID'] ?>" <?php
                        if (!(strcmp($row_getnamesRS['memberID'], '$tableserver.$x'))) {
                            echo "selected=\"selected\"";
                        }
                        ?>><?php
                                    echo ucfirst(strtolower($row_getnamesRS['first_name']))
                                    . "&nbsp;" . ucfirst(strtolower($row_getnamesRS['last_name']))
                                    ?></option>
                        <?php
                    }
                } while ($row_getnamesRS = mysqli_fetch_assoc($getnamesRS));
                $rows = mysqli_num_rows($getnamesRS);
                if ($rows > 0) {
                    mysqli_data_seek($getnamesRS, 0);
                    $row_getnamesRS = mysqli_fetch_assoc($getnamesRS);
                }
                ?>
            </select>
        </p>
    </blockquote>
    <?php
    $x++;
} while ($x <= 6);
?>

【问题讨论】:

    标签: php loops increment do-while


    【解决方案1】:
    $i=0;
    do{
       echo $_POST['someval'.$i];
    }while(++$i < 6)
    

    【讨论】:

    • 是的!这就是我想要做的。不知何故,我的语法一定是错误的。但这有效!谢谢!
    • 这样我就可以省去 27 行用于定义 post 变量的代码。
    • @rickab1 太好了,很高兴我能帮上忙。
    【解决方案2】:

    也许是这样的? ...

    $arr = [];
    
    for ($i = 1; $i <= 6; $i++)
        array_push($arr, $_POST["tableserver" . $i]);
    
    $arr; // Contains 6 values (starting from $_POST["tableserver1"] to $_POST["tableserver6"])
    

    【讨论】:

      【解决方案3】:

      发布一个数组会更容易

      所以而不是

      name="tableserver<?php echo $x; ?>"
      

      使用

      name="tableserver[]";
      

      你可以做的

      foreach($_POST['tableserver'] as $tableServer){....}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-03
        • 2016-07-01
        • 1970-01-01
        • 2011-06-25
        • 2011-09-13
        • 1970-01-01
        • 2019-06-09
        • 1970-01-01
        相关资源
        最近更新 更多