在PHP中删除索引会话

在PHP中删除索引会话,php,session,Php,Session,我有一个关于PHP会话的问题 我已经用PHP编写了设置会话的代码,我想删除它,但是我遇到了一些错误,并且对使用UNSET(变量$\u session)感到困惑。也许有人能帮我展示一下我该怎么处理这件事。提前谢谢 $_SESSION['chart'] = array(); $_SESSION['chart'][0]['index'] = 0 $_SESSION['chart']

我有一个关于PHP会话的问题

我已经用PHP编写了设置会话的代码,我想删除它,但是我遇到了一些错误,并且对使用UNSET(变量$\u session)感到困惑。也许有人能帮我展示一下我该怎么处理这件事。提前谢谢

                    $_SESSION['chart'] = array();
                    $_SESSION['chart'][0]['index']  = 0
                    $_SESSION['chart'][0]['type'] = $type;
                    $_SESSION['chart'][0]['idanimal'] = $iddog;
                    $_SESSION['chart'][0]['price'] = $price;
                    printdata(); // <== this is the function to print out the data

谢谢

我发现您的代码中有几个地方可以改进:

  • 不要在函数中回显,而是返回(然后回显函数返回的内容)。这使您可以更灵活地处理结果
  • PHP有一个用于迭代数组的内置循环,foreach循环。你应该用它来代替它
这就是我所拥有的:

function print_session_data($session) {
    if (!is_array($session)) {
        return "Array is empty";
    }
    $table_data  = "";
    $total_harga = 0;
    foreach ($session as $index => $data) {
        $table_data .= <<<TABLE_DATA
        <tr>
            <td>$index</td>
            <td>{$data["type"]}</td>
            <td>{$data["idanimal"]}</td>
            <td>Rp. {$data["harga"]}</td>
            <td><a href="deletesession.php?session=$index">Proses</a></td>
        </tr>
TABLE_DATA;
        $total_harga += $data["harga"];

    }

    $result = <<<RESULT
<h3>Berikut abalah keranjang belanja anda</h3>
<table border="1">
    <thead>
        <tr>
            <th>No</th>
            <th>Animal Type</th>
            <th>ID Binatang</th>
            <th>Harga</th>
            <th>Hapus Data</th>
        </tr>
    </thead>
    <tbody>
        $table_data
    </tbody>
</table>
<blockquote>Total Pembelian Item Yang Anda Pesan = <strong>Rp. $total_harga</strong></blockquote>
RESULT;
    return $result;
}

$_SESSION['chart']                = array();
$_SESSION['chart'][0]['type']     = "Type";
$_SESSION['chart'][0]['idanimal'] = 6;
$_SESSION['chart'][0]['price']    = '$25';
$_SESSION['chart'][0]['harga']    = 25;
echo print_session_data($_SESSION["chart"]); // <== this is the function to print out the data
函数打印会话数据($session){
如果(!is_数组($session)){
返回“数组为空”;
}
$table_data=“”;
$total_harga=0;
foreach($index=>$data的会话){
$table_数据=
假设有一个已经被内容填充的图表,那么我
试图在此代码中删除,我收到了未设置的错误
变量
unset($\u会话['chart'][1])

从您的代码中可以看出,正确取消设置数据的最佳方法如下:


在再次使用会话变量索引之前,必须检查
$\u会话['chart'][0]
是否已设置。如果
$\u会话['chart']
数组仍包含其他索引,则可以调用
printdata();
否则表示会话为空。

是否尝试使用函数
SESSION\u unset()
?您可以检查当前会话的索引,并在必要时将其取消设置。
unset($\u会话['chart'][1])
如果您参考上述数据,将不起作用。
unset($\u会话['chart'][0])
应该删除正确的索引吗?请参考准确答案。如果我打印数据会出错错误:注意:未定义的偏移量:0第二行末尾缺少分号:$\u会话['chart'][0]['index']=0等等,删除会话有一些问题。你能给我看一下当前索引中我想删除的删除会话的代码吗?谢谢你的代码确实导致了很多错误,你检查并调试了吗?很多人都提供了这个,但不幸的是,关于这个问题没有直接的答案我的问题,可以用你以前尝试过的正确答案回答这个问题,如果有任何直接的答案,我们将不胜感激,而不是发布我之前已经声明过的内容。谢谢
unset($_SESSION['chart'][1])
function print_session_data($session) {
    if (!is_array($session)) {
        return "Array is empty";
    }
    $table_data  = "";
    $total_harga = 0;
    foreach ($session as $index => $data) {
        $table_data .= <<<TABLE_DATA
        <tr>
            <td>$index</td>
            <td>{$data["type"]}</td>
            <td>{$data["idanimal"]}</td>
            <td>Rp. {$data["harga"]}</td>
            <td><a href="deletesession.php?session=$index">Proses</a></td>
        </tr>
TABLE_DATA;
        $total_harga += $data["harga"];

    }

    $result = <<<RESULT
<h3>Berikut abalah keranjang belanja anda</h3>
<table border="1">
    <thead>
        <tr>
            <th>No</th>
            <th>Animal Type</th>
            <th>ID Binatang</th>
            <th>Harga</th>
            <th>Hapus Data</th>
        </tr>
    </thead>
    <tbody>
        $table_data
    </tbody>
</table>
<blockquote>Total Pembelian Item Yang Anda Pesan = <strong>Rp. $total_harga</strong></blockquote>
RESULT;
    return $result;
}

$_SESSION['chart']                = array();
$_SESSION['chart'][0]['type']     = "Type";
$_SESSION['chart'][0]['idanimal'] = 6;
$_SESSION['chart'][0]['price']    = '$25';
$_SESSION['chart'][0]['harga']    = 25;
echo print_session_data($_SESSION["chart"]); // <== this is the function to print out the data