2

PHP でプッシュ アンド ポップ スタック配列を実行しようとしていますが、最後の値のみが格納されます。ボタンをもう一度クリックして同じページをロードしても、他の値を保存するにはどうすればよいですか? これは私がやったことです:

<?php
    if(!$_GET)
        $myStack = array();
    else
        $myStack[] = "";
?>

<html>
<head> <title>Exercise</title>
</head>
<body>
    <form action="test.php" method="get">
        Element: <input type="text" name="num"  value="0"/><br/>
        <input type="submit" name="push" value="push" />
        <input type="submit" name="pop" value="pop" />
    </form>

<?php

    if(isset($_GET["push"])){
        array_push($myStack, $_GET["num"]);
        foreach($myStack as $val)
            echo $val . " ";
    }
    elseif(isset($_GET["pop"])){
        array_pop($myStack);
        foreach($myStack as $val)
            echo $val . " ";
    }
?>
</body>
</html>
4

3 に答える 3

1

すべての http リクエスト php は、すべての変数を使用してスクリプトを最初から実行します。リクエスト間で値を保存するには、 $_SESSIONまたはstatic変数を使用する必要があります。
配列を格納するには$_SESSION、キーに割り当てるだけです:

$_SESSION["myStack"] = array();
$_SESSION["myStack"][] = 1;
$_SESSION["myStack"][] = 2;
于 2012-11-06T09:55:20.857 に答える
0

セッションを使用して配列を格納するコードは次のとおりです。

<?php
//starts the session
session_start();
$myStack = array();

//gets the array from the session if it exists
if (isset($_SESSION['stack']))
    $myStack = $_SESSION['stack'];

?>
<html>
    <head> <title>Exercise</title>
</head>
<body>
<form action="test.php" method="get">
    Element: <input type="text" name="num"  value="0"/><br/>
    <input type="submit" name="push" value="push" />
    <input type="submit" name="pop" value="pop" />
</form>

<?php

if(isset($_GET["push"])){
    array_push($myStack, $_GET["num"]);
    foreach($myStack as $val)
        echo $val . " ";
}
elseif(isset($_GET["pop"])){
    array_pop($myStack);
    foreach($myStack as $val)
        echo $val . " ";
}

//stores the array in the opened session
$_SESSION['stack'] = $myStack;
?>
</body>
</html>
于 2012-11-06T10:07:25.333 に答える
0

スクリプトの一番上にリセットがあります。リロード後、スタックは空になります。また、スタックをセッション変数に保存する必要があります。

于 2012-11-06T09:55:24.190 に答える