如何从 php 会话数组中删除每个项目

问题描述 投票:0回答:1

我正在开发一个酒店项目,该项目使用会话数组在表中显示数据。我想知道如何从 php 会话数组中删除特定项目。如何在按下删除按钮时删除特定的阵列键。请帮我解决这个问题。

php arrays session shopping-cart
1个回答
0
投票

要从 PHP 会话数组中删除特定项目,您可以使用 unset() 函数以及要删除的特定键。具体方法如下:

假设您在会话中存储了一个数组:

session_start(); // Make sure to start the session first

// Initialize the session array if it doesn't exist
if (!isset($_SESSION['hotel_data'])) {
    $_SESSION['hotel_data'] = array();
}

// Add some data to the session array
$_SESSION['hotel_data'][] = array('name' => 'Hotel A', 'rating' => 4);
$_SESSION['hotel_data'][] = array('name' => 'Hotel B', 'rating' => 3);
$_SESSION['hotel_data'][] = array('name' => 'Hotel C', 'rating' => 5);

现在,如果您想在按下删除按钮时从会话数组中删除特定项目,您可以这样做:

if (isset($_GET['delete']) && isset($_GET['index'])) {
    $index = $_GET['index'];
    if (isset($_SESSION['hotel_data'][$index])) {
        unset($_SESSION['hotel_data'][$index]);
        $_SESSION['hotel_data'] = array_values($_SESSION['hotel_data']); // Reindex the array
    }
}

// Display the table
echo '<table>';
foreach ($_SESSION['hotel_data'] as $index => $hotel) {
    echo '<tr>';
    echo '<td>' . $hotel['name'] . '</td>';
    echo '<td>' . $hotel['rating'] . '</td>';
    echo '<td><a href="?delete=true&index=' . $index . '">Delete</a></td>';
    echo '</tr>';
}
echo '</table>';

在此示例中,当您单击特定项目的“删除”链接时,它将将该项目的索引传递给 URL。然后,使用 unset() 函数,该项目将从会话数组中删除。之后,使用 array_values() 函数重新索引数组,使索引再次按顺序排列。

© www.soinside.com 2019 - 2024. All rights reserved.