如何计算数组元素的数量并为该数字运行循环?

时间:2017-02-24 10:44:03

标签: php

我正在尝试在guestname输入字段中插入多个名称。所以我已将guestname声明为数组。在使用逗号分隔的guestname字段中插入一些名称后(例如:superman,batman,spiderman),我输出为“guestname”:[“superman,batman,spiderman”]。我想运行循环计数数组的所有值并逐个打印,其他数据(例如电子邮件和地址)将保持不变。

<input type="text" name="guestname[]" multiple>
<input type="text" name="email">
<input type="text" name="address">
<tr>
foreach(array_count_values($_POST['guestname'] as $key => $value)
{
  echo "<td>". $value."</td>";
  echo "<td>". $_POST["email"]."</td>";
  echo "<td>". $_POST["address"]."</td>";
}

</tr>

5 个答案:

答案 0 :(得分:2)

首先,您必须加载逗号分隔值,然后从数据中读取它。

$guest = explode(",", $_POST['guestname'][0]);
foreach($guest as $value)
{
  echo "<td>". $value."</td>";
  echo "<td>". $_POST["email"]."</td>";
  echo "<td>". $_POST["address"]."</td>";
}

答案 1 :(得分:0)

foreach(explode(',', join(',', $_POST['guestname'])) as $key => $value)
{
    ...
}

这是你在寻找什么?

它将所有$ _POST ['guestname']值合并为一个字符串,添加额外的值,然后在数组中重新展开它们并循环播放。

示例:

$_POST['guestname'][] = "name1, name2, name3, name4";
$_POST['guestname'][] = "name5, name6, name7";

返回:

name1
name2
name3
name4
name5
name6
name7

答案 2 :(得分:0)

尝试以下代码。

<?php
    foreach($_POST['guestname'] as $key => $value)
    {
       //your content
    } 
?>

答案 3 :(得分:0)

代码"guestname":["superman, batman, spiderman "]表示"superman, batman, spiderman "是一个字符串。如果这些是一个数组,它将是"superman", "batman", "spiderman "。所以也许你可以使用explode来获取一系列元素。 例如

$guestname = explode("," , $_POST['guestname']);

然后

foreach(array_count_values($guestname as $key => $value)

答案 4 :(得分:0)

希望你看起来像下面这样:

<form method="post">
 <input type="text" name="guestname">
 <input type="text" name="email">
 <input type="text" name="address">
 <input type="submit" value="submit">
</form>

<?php
 if(isset($_POST['guestname'])){
   echo "<table border='1'>";
   foreach(array_filter(explode(',',$_POST['guestname'])) as $key => $value)
   {
     echo "<tr><td>". $value."</td>";
     echo "<td>". $_POST["email"]."</td>";
     echo "<td>". $_POST["address"]."</td></tr>";
   }
 echo "</table>";
}

?>