当我尝试添加新东西时,数组被清空(PHP)

时间:2015-01-07 17:20:20

标签: php

我试图在用户对某个类别进行的每次点击后将内容添加到数组中但由于某种原因它会不断更换数组中的所有内容。我无法弄清楚我哪里出错了。我试过谷歌搜索'它和我发现的每个例子看起来都和我写的一样。请帮助!

这些函数存储在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>';
}

此功能打印出用户可以点击的链接列表

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)制作的链接时,它都会刷新页面,其中包含要点击的新链接和要显示的新产品,具体取决于他们选择的$cat。我想将$cat推送到$backtrace数组。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

就在这里:

$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);
    }
    ...