将PHP数组的名称转换为字符串的最佳方法

将PHP数组的名称转换为字符串的最佳方法,php,session,Php,Session,我有一个链接到PHP$\u会话数据的HTML表,我希望在每一行中添加一个删除按钮,不仅从HTML表中删除该行,而且从$\u会话变量中删除该行 这是填充我的表的代码: tableData.php // echo the table headings echo <<<HERE <tr> <th>CityID</th> <th>State</th> <th>City</th>

我有一个链接到PHP$\u会话数据的HTML表,我希望在每一行中添加一个删除按钮,不仅从HTML表中删除该行,而且从$\u会话变量中删除该行

这是填充我的表的代码:

tableData.php

// echo the table headings
echo <<<HERE
<tr>
    <th>CityID</th>
    <th>State</th>
    <th>City</th>
    <th></th>
</tr>
HERE;

if (isset($_SESSION['cityData']))
{

    foreach($_SESSION['cityData'] as $city)
    {
        echo "<tr>";
        // print each row of data
        foreach($city as $data)
        {
            echo "<td>" . $data . "</td>";
        }
        //echo '<td><button action="<?php unset(' . $_SESSION['cityData'][key($_SESSION['cityData'])] . ')?>">Delete Row</button></td>';
        echo "</tr>";
    }

}
//回显表标题

echo这并不是那么简单。您需要让按钮提交到链接,然后让PHP取消设置内容

foreach($_SESSION['cityData'] as $index => $city) //added $index =>
{
    echo "<tr>";
    // print each row of data
    foreach($city as $data)
    {
        echo "<td>" . $data . "</td>";
    }
    echo '<td><form method="post" action=""><input type="hidden" name="delete" value="' . $index . '"><input type="submit" value="Delete Row"></form></td>';
    echo "</tr>";
}

您需要进行进一步的验证,以检查POST delete是否在$\u SESSION['cityData']的范围内,但基本思想是这样的。

您在这里错误地混合了客户端和服务器端代码:(

“客户端”类似于用户的浏览器。当用户在其浏览器上单击该按钮时,它将运行客户端代码(即JavaScript)-在该阶段,您的PHP将不再存在,因此您无法访问该数组

当从服务器请求页面时,会执行PHP。此时,您可以执行所需的任何计算,然后将文本响应(例如通过
echo
)返回到用户的浏览器或任何客户端

该按钮应向您的服务器发出另一个请求,以便您可以使用PHP删除该行。然后,您的PHP服务器应向请求浏览器回显一个响应,以便用户知道它是否工作


按钮上的链接需要提供一些额外的详细信息,比如用户要删除的行的索引,这样PHP脚本就不会删除错误的行。请参阅下面的Dave Chen的答案以获取一些示例代码。

噢,我知道内爆()函数,以及它要求一个令牌参数的事实:这是生成一个静态HTML文件并将其发送到浏览器。如果你想让它做些什么,你需要提交某种形式的表单。你不能告诉web浏览器直接从页面上在服务器上执行PHP代码。有没有办法让它发布?是的,没有问题。你可以我只是有许多带按钮的小表单,逻辑保持不变(只需使用$\u POST而不是$\u GET)。我已经更新了上面的代码以反映这些更改。请尝试更新的代码,在echo语句中使用
只是语法错误。现在应该可以使用了。
if (isset($_POST['delete']))
    unset($_SESSION['cityData'][$_POST['delete']]);