我试图从动态生成的选项列表中捕获用户的复选框选择,但我得到的是"数组"而不是所选的名称。
在我的最后一次测试中,我选中了三个方框中的两个,得到了3个"Array"实例。
这是我的查询,查找名称:
$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
不知道为什么要这样做:
$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>";
}
你得到Array而不是name是完全正常的。看,写:
$attendees[] = $name;
向PHP暗示它是一个数组。另一方面,foreach循环做相反的事情,它从$attendee数组中获取每个值,并将其作为$name变量提供给您。所以你基本上是在做正确的事情,然后莫名其妙地把它恢复到数组。
解决方案:
将{$attendees}
替换为{$name}
。应该可以的
您可以用更少的代码编写它。$attendees
现在将包含您选中的复选框。
$attendees = array()
foreach($_POST['emp_name'] as $name){
$attendees[] = $name;
}