如何删除foreach循环中的最后一个值

时间:2018-05-24 14:12:09

标签: php post

我有一个动态多输入。提交表单时,插入数组值。但我想插入没有'submit'的值。 这是foreach循环,(不包括sql secure)

if (isset($_POST['submit'])) {
    $nearest = $db->prepare('insert into nearest set place=?, distance=?');
    $i = 0;
    foreach ($_POST as $val) {
        $place = $_POST['place'][$i];
        $distance = $_POST['distance'][$i];
        $nearest->execute([$place, $distance]);
        $i++;
    }
}

此循环插入'$ _POST'值并插入空行。

2 个答案:

答案 0 :(得分:1)

如果你想保持循环,你可以使用array_slice不包括循环中的最后一项 Array_slice将从0(不是文字,但第一项)到秒到最后(-1)的项目 http://php.net/manual/en/function.array-slice.php

EDIT;我认为你需要一个for循环来循环“地点”的计数。

if (isset($_POST['submit'])) {
  $nearest= $db -> prepare('insert into nearest set place=?, distance=?');
  for($i=0; $i< count($_POST['place']; $i++){
      $place = $_POST['place'][$i];
      $distance= $_POST['distance'][$i];
      $nearest-> execute([$place , $distance]);
      $i++;
  }
}

示例:https://3v4l.org/F47ui

答案 1 :(得分:0)

您可以在使用常规submit进行循环之前,从$_POST中删除unset()密钥。但这是不好的方法。我宁愿推荐做的是&#34;隔离&#34;你的数据,而不是:

<input name="distance" ... >

让你所有的投入都是这样的:

<input name="data[distance]" ... >

然后你只需要循环过来&#34;数据&#34; (你喜欢的名字)数组:

foreach($_POST['data'] as val)

此外,抵制在盲人中删除最后一个元素,因为它基于错误的假设,这总是你的&#34;提交&#34;元件。如果您向表单添加更多提交按钮怎么办?或者订单会改变吗?