当我尝试向其中添加新内容时数组被清空 (PHP)

Array gets emptied when i try to add new stuff to it (PHP)

我试图在用户每次点击某个类别后将内容添加到数组中,但由于某种原因它不断替换数组中的所有内容。我不知道我哪里出错了。我试过 'googling' 它,我发现的每个例子看起来都与我写的相似。请帮忙!

这些函数存储在core.php

function getStoreBacktrace($cat) {
    include("config.php");
    $backtrace = array();
    if ($cat != 0) {
        array_push($backtrace, $cat);
    }
    if (count($backtrace != 0)) {
        foreach($backtrace as $c){
            echo getBackCatName($c);
        }    
    }
    print_r($backtrace); // Put this to see what output is
}

function getBackCatName($c) {
    include("config.php");
    $query = 'SELECT * FROM `home_store_cats` WHERE `id`="'.$c.'"';
    $r_query = mysql_query($query);
    $result = mysql_fetch_array($r_query);
    echo ' > <a href="?cat='.$result['id'].'">'.$result['name'].'</a>';
}

此函数打印出 link 用户可以单击的列表

function getStoreCat($cat) {
    include("config.php");
    $query = 'SELECT * FROM `home_store_cats` WHERE `main`="'.$cat.'" ORDER BY `name` ASC';
    $r_query = mysql_query($query);
    echo '<ul>';
    while ($result = mysql_fetch_array($r_query)) {
        echo '<li>';
        echo '<a href="?cat='.$result['id'].'">'.$result['name'].'</a>';
        echo '</li>';
    }
    echo '</ul>';
}

它在 store.php

中被调用
<?php
include("config.php");
include("core.php");
$backtrace = array();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title><?php echo getSiteTitle().' :: '.getSiteSlogan(); ?></title>
</head>
<body>
    <table width="100%">
        <tr>
            <td colspan="2">
                <!-- Backtrace -->
                <a href="store.php">Home</a>
                <?php echo getStoreBacktrace($cat, $backtrace); ?>
            </td>
        </tr>
        <tr>
            <td>
                <!-- Categories -->
                <table>
                    <tr>
                        <td><?php echo getStoreCat($cat); ?></td>
                    </tr>
                </table>
            </td>
            <td>
                <!-- Products -->
                <table>
                    <tr>
                        <?php echo getStoreProducts($cat); ?>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</body>
</html>

现在,每当用户点击由函数 getStoreCat($cat) 生成的 link 时,它就会刷新页面,并显示新的 link 和显示的新产品,具体取决于$cat 他们选择了什么。我想将 $cat 推送到 $backtrace 数组。

每次调用 getStoreBacktrace 时,都会在 $backtrace 中实例化一个全新的数组。

就在这里:

$backtrace = array();

每次调用 getStoreBacktrace().

时,您都有效地重置了数组

编辑:

感谢您解决您的问题。现在很明显,问题是您需要通过多个页面视图使 $backtrace 持久化。使用会话执行此操作:

页面模板

<?php
session_start(); // enable sessions
include("config.php");
include("core.php");
?>

<!DOCTYPE html>
etc...

函数定义

<?php
function getStoreBacktrace($cat) {
    include_once("config.php"); // use include_once() to prevent possible errors
    if (!isset($_SESSION['backtrace']))
        $_SESSION['backtrace']= array();
    if ($cat != 0) {
        array_push($_SESSION['backtrace'], $cat);
    }
    ...