我正在通过Head First PHP获得这段代码。
<?php
$dbc = mysqli_connect('localhost', 'root', 'atlantis2016', 'elvis_store')
or die('Error connecting to MySQL server.');
if(isset($_POST['submit']))
{
foreach ($_POST['todelete'] as $delete_id)
{
$query = "DELETE FROM email_list WHERE id = $delete_id";
mysqli_query($dbc, $query);
}
echo 'Customer removed. <br />';
}
$query = "SELECT * FROM email_list";
$result = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($result))
{
echo '<input type="checkbox" value="' . $row['id'] . '" name="todelete[]" />';
echo $row['first_name'];
echo ' ' . $row['last_name'];
echo ' ' . $row['email'];
echo '<br />';
}
mysqli_close($dbc);
?>
我完全理解如何使用foreach循环遍历数组todelete
中的所有id。
我不知道的是阵列本身是如何创建的? HTML中是否还有数组?如果没有,我们如何使用纯HTML在以下行中创建PHP数组?
echo '<input type="checkbox" value="' . $row['id'] . '" name="todelete[]" />';
此外,我也觉得神秘的是,只有那些已选中复选框的 id ,才会在数组todelete
中结束,而忽略其他复选框?
基本上,请为我解释todelete
数组的来源和功能。
答案 0 :(得分:1)
通过将输入名称定义为todelete[]
,我们说这个输入变量todelete
会在表单提交后通过POST
或{{1}将任何选中的复选框发送到PHP脚本}。
父表单GET
属性中定义的PHP脚本将能够访问'action'
下的值,这将是一个数组结构。
如果我们想要发送与变量名相关联的多个值,则此语法很有用。
另请参阅:HTML input arrays
答案 1 :(得分:0)
this链接上评分最高的答案,精美地描述了阵列的内部工作原理。它几乎清除了我所有的疑虑。