Php Foreach显示的是“数组”,而不是动态生成的复选框中的选定项

Php Foreach显示的是“数组”,而不是动态生成的复选框中的选定项,php,Php,我试图从动态生成的选项列表中捕获用户的复选框选择,但我得到的是数组而不是所选的名称 在上一次测试中,我选中了三个框中的两个,并得到了3个数组实例 这是我查找名称的查询: $query = "SELECT id, first_name, last_name FROM users WHERE location_id = " . $location_id; $result = mysqli_query($connection, $query); if (!$result) {

我试图从动态生成的选项列表中捕获用户的复选框选择,但我得到的是数组而不是所选的名称

在上一次测试中,我选中了三个框中的两个,并得到了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>";
        }

但是它仍然返回数组。

您可以用更少的代码编写它。 $Attendes现在将包含您的复选框

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

不确定您为什么这样做:

$attendee = (array)$_POST['emp_name'];
尝试将其替换为:

$attendee = $_POST['emp_name'];
从你的问题来看还不太清楚,但我认为你是在一个数组中创建一个数组,这就是问题所在

如果上述方法没有帮助,请尝试使用var_转储给您数组响应的变量,您将看到其中的内容

编辑:除上述更改外,还应尝试进行以下更改:

替换所有此代码:

$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];
    }
编辑2:

根据您的代码:

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

            $htmlBody .= "<tr><td>{$attendees}</td></tr>";
        }
您向php暗示它是一个数组。另一方面,foreach循环的作用正好相反,它从$attendee数组中获取每个值,并将其作为$name变量提供给您。因此,您基本上是在做正确的事情,然后无缘无故地将其恢复到数组

解决方案:


将{$attendes}替换为{$name}。它应该可以工作。

尝试对$\u POST变量进行var\u转储,看看它是如何嵌套的。我刚刚注意到我在错误日志中收到了一个数组到字符串转换通知。您的替换与我编写的相同。不起作用。我认为我的foreach需要改变。当你这样做时,你会得到什么:var_dump$attendee;我知道了:array2{[0]=>string13 name 1[1]=>string10 name 2}我更改了名字,因为它们是真实的人名,哈哈。@Mike你为什么要这么做?因为现在是凌晨2:48,我会尝试任何事情。。。不能再思考了。你为什么这么问?@Mike Oh抱歉没想到你是执行官。在过去的半小时里回答了更多的问题:
foreach ($attendee as $name) {
            $attendees[] = $name;

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