Foreach正在展示"阵列"而不是动态生成的复选框中的选定项目

时间:2014-05-07 09:18:02

标签: php

我正在尝试从动态生成的选项列表中捕获用户的复选框选项,但我得到的是“数组”而不是所选的名称。

在我的上一次测试中,我检查了三个盒子中的两个,然后返回了3个“阵列”实例。

这是我查询名称的查询:

$query = "SELECT id, first_name, last_name 
          FROM users WHERE location_id = " . $location_id;
$result = mysqli_query($connection, $query);
if (!$result) 
{
    die("Database query failed: " . mysqli_error($connection));
}

while ($row = mysqli_fetch_array($result)) 
{
    $name = $row['first_name'] . " " . $row['last_name'];
    echo '<label><input type="checkbox" name="emp_name[]" id="emp_name[]" value="' . $name . '"> ' . $name . '</label>';
}
然后我发布了这样的名字数组:

$attendee = $_POST['emp_name'];

并尝试为我的电子邮件生成名称列表,如下所示:

$values = ('emp_name');
    foreach ($values as $value) {
        $$value = (array)$_POST[$value];
    }
    for($i = 0; $i < count($attendee); $i++){
        $attendees = array();
        foreach ($values as $value) {
            $attendees[] = ${$value}[$i];
        }

有人能帮我看看有什么不对吗?


我更改了我的代码并包含了我要渲染的html的一部分:

foreach ($attendee as $name) {
            $attendees[] = $name;

            $htmlBody .= "<tr><td>{$attendees}</td></tr>";
        }

但它仍会返回Array。

2 个答案:

答案 0 :(得分:0)

你可以用很少的代码写出来。 $attendees现在将包含您选中的复选框。

$attendees = array()
foreach($_POST['emp_name'] as $name){
     $attendees[] = $name;
}

答案 1 :(得分:0)

不确定为什么要这样做:

$attendee = (array)$_POST['emp_name'];

尝试将其替换为:

$attendee = $_POST['emp_name'];

从您的问题来看,它不太清楚,但我认为您在数组中创建了一个数组,这就是问题所在。

如果上面没有帮助,请尝试var_dump()给出“Array”响应的变量,然后你会看到它里面有什么。

编辑:除了上述更改之外,请尝试进行此更改:

替换所有这些代码:

$values = ('emp_name');
foreach ($values as $value) {
    $$value = (array)$_POST[$value];
}
for($i = 0; $i < count($attendee); $i++){
    $attendees = array();
    foreach ($values as $value) {
        $attendees[] = ${$value}[$i];
    }

使用:

foreach ($_POST['emp_name'] as $name) {
    $attendees[] = $name;
}

编辑#2:

根据你的代码:

foreach ($attendee as $name) {
            $attendees[] = $name;

            $htmlBody .= "<tr><td>{$attendees}</td></tr>";
        }

你获得数组而不是名字是完全正常的。请参阅:

   $attendees[] = $name;

你暗示php是一个数组。另一方面,foreach循环执行相反的操作,它从$ attendee数组中获取每个值,并使其可用作$ name变量。所以你基本上做了正确的事情,然后无缘无故地将它恢复为数组。

解决方案:

{$attendees}替换为{$name}。它应该工作。