【问题标题】:Loop through POST array with PHP使用 PHP 循环遍历 POST 数组
【发布时间】:2019-02-02 16:46:13
【问题描述】:

我的网站上有一个表格。当我将它提交到我的 PHP 脚本时,我使用var_dump($_POST); 来显示所有已提交的表单数据。数组如下。

我想使用 PHP 在以下数组上运行 foreach 循环并按索引对它们进行分组。

预期输出:

1 - 111 - 1
2 - 222 - 2
3 - 333 - 3

所以每一行都会有基于数组元素中的整数的相关名称、来源和级别

谁能解释一下这是怎么做到的?

array(11) {
  ["source_name0_id"]=>
  string(1) "1"
  ["source_code0_id"]=>
  string(3) "111"
  ["source_level0_id"]=>
  string(1) "1"
  ["source_name1_id="]=>
  string(1) "2"
  ["source_code1_id="]=>
  string(3) "222"
  ["source_level1_id="]=>
  string(1) "2"
  ["source_name2_id="]=>
  string(1) "3"
  ["source_code2_id="]=>
  string(3) "333"
  ["source_level2_id="]=>
  string(1) "3"
  ["submit"]=>
  string(6) "Submit"
}

谢谢!

【问题讨论】:

  • 请显示预期输出?
  • @RambarunKomaljeet 好主意 - 现已更新 :)
  • @michaelmcgurk 你知道你有多少吗?那就是问,你知道数字部分的最大值吗?
  • @Chipster 不幸的是,我没有 - 该脚本允许用户创建多行数据,因此它可能超过 2 行。感谢您的回答。我可能对此有疑问。
  • 脚本能否跟踪最大值并将其存储在隐藏的输入中?

标签: php


【解决方案1】:
$foreach($array /* or in the case $_POST? */ as $key => $value) {
    /// loop...
}

或者只是

$foreach($array as $value) {
    /// loop...
}

编辑:因此,要获得您期望的输出,您确实有另一种简单的方法,如果您提前知道最大值:

$for($i = 0; $i<$max /* if you have it */; $i++) {
  echo $_POST["source_name" . $i . "_id"] . " - " .
     $_POST["source_code" . $i . "_id"] . " - " .
  $_POST["source_level" . $i . "_id"] . "<br>\n";
}

【讨论】:

  • 这是棘手的部分。简单的方法是编辑脚本以跟踪最大值(或提交的行数)并将其传递给 $_POST["maxRows"] 或类似的东西。
  • 为什么将两个空的foreach(){} 构造显示为$foreach(){}?不确定这是否实现了 OP 的目标。
  • @jibsteroos 最初的帖子只是询问如何循环遍历数组的所有元素,而不一定像现在这样进行给定的输出。
  • @michaelmcgurk 嗯。这很奇怪。您可以发布您正在使用的 echo 语句吗?
  • @michaelmcgurk 耶!我很高兴。
【解决方案2】:
<?php

$array = [
    "source_name0_id"=> "1",
    "source_code0_id"=> "111",
    "source_level0_id"=> "1",
    "source_name1_id="=> "2",
    "source_code1_id="=> "222",
    "source_level1_id="=> "2",
    "source_name2_id="=> "3",
    "source_code2_id="=> "333",
    "source_level2_id="=> "3",
    "submit"=> "Submit"
];

$output = [];

foreach($array as $key=>$val)
{
    $output[] = [$val, $key, $val];
}

echo '<pre>';
print_r($output);

【讨论】:

    猜你喜欢
    • 2013-11-23
    • 2011-05-23
    • 2012-11-14
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多