首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个Foreach循环进行所有的$_POST输入,如何使它更具体?

这个Foreach循环进行所有的$_POST输入,如何使它更具体?
EN

Stack Overflow用户
提问于 2012-10-19 12:00:49
回答 3查看 842关注 0票数 0

我在HTML端有以下代码:

代码语言:javascript
复制
<form action="testx.php" method="post">
<input type="hidden" name="block-1" value="001"/>
<input type="hidden" name="block-2" value="012"/>
<input type="hidden" name="block-3" value="002"/>
<input type="hidden" name="block-4" value="005"/>
<input type="hidden" name="block-5" value="008"/>

<input type="hidden" name="title" value="title goes here"/>
<input type="hidden" name="code" value="018439128484"/>
<input type="submit" value="Finish!" class="submit-btn" />
</form>

我在PHP端有一个Foreach循环:

代码语言:javascript
复制
<?php
$i=0;
foreach($_POST as $name => $value)
{
   echo $i . " - " . $name . ": " . $value . "<br>";
   $i++;
}  
?>

不幸的是Foreach循环处理所有输入..。如何使这个循环只使用名称“块-X”进行输入?

我试过这样做,但失败了:

代码语言:javascript
复制
$i=0;
$x = 'block-'.$i+1;
foreach($_POST[$x] as $name => $value)

它说:警告:为foreach()提供的无效参数

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-19 12:02:52

尝试在循环中通过$name进行过滤,例如使用strpos

代码语言:javascript
复制
<?php
$i=0;
foreach($_POST as $name => $value)
{
   if(strpos($name, 'block-')===0) {
      echo $i . " - " . $name . ": " . $value . "<br>";
      $i++;
   }
}  
?>
票数 4
EN

Stack Overflow用户

发布于 2012-10-19 12:04:25

我现在看到的唯一方法是:

代码语言:javascript
复制
foreach($_POST as $name => $value)
{
   if(substr($name, 0, 5) == "block"){
    echo $i . " - " . $name . ": " . $value . "<br>";
    $i++;
  }
}

编辑:有人比我快:x

另一种解决方案,即避免字符串比较。

代码语言:javascript
复制
while(isset($_POST["block-".$i])){
  echo $i . " - block-" . $i . ": " . $_POST["block-".$i] . "<br>";
  $i++;
}
票数 2
EN

Stack Overflow用户

发布于 2012-10-19 14:31:45

所有其他的答案都是错误的。

你有5个你感兴趣的具体指控。它们是数字和顺序的。您希望从1迭代到5,不想对整个$_POST数组进行迭代,有选择地跳过键,而且绝对不希望在这样一个琐碎的任务中涉及正则表达式。每个使用正则表达式来解决这个问题的答案都是完全错误的,使用strpos的答案也不会更好。

用这个:

代码语言:javascript
复制
for ($i = 1; $i <= 5; ++$i) {
   echo "$i = block-$i: ", $_POST["block-$i"];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12973852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档