这个代码如何在PHP中访问HTML中创建数组?

时间:2016-07-13 10:47:11

标签: php arrays

我正在通过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数组的来源和功能。

2 个答案:

答案 0 :(得分:1)

通过将输入名称定义为todelete[],我们说这个输入变量todelete会在表单提交后通过POST或{{1}将任何选中的复选框发送到PHP脚本}。

父表单GET属性中定义的PHP脚本将能够访问'action'下的值,这将是一个数组结构。

如果我们想要发送与变量名相关联的多个值,则此语法很有用。

另请参阅:HTML input arrays

答案 1 :(得分:0)

this链接上评分最高的答案,精美地描述了阵列的内部工作原理。它几乎清除了我所有的疑虑。