Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单页提交时堆栈数组丢失以前的值_Php_Arrays_Stack - Fatal编程技术网

Php 单页提交时堆栈数组丢失以前的值

Php 单页提交时堆栈数组丢失以前的值,php,arrays,stack,Php,Arrays,Stack,我试图在PHP中执行push和pop堆栈数组,但只存储最后一个值。即使我再次单击按钮并加载同一页面,如何存储其他值? 这就是我所做的: <?php if(!$_GET) $myStack = array(); else $myStack[] = ""; ?> <html> <head> <title>Exercise</title> </head> <body>

我试图在PHP中执行push和pop堆栈数组,但只存储最后一个值。即使我再次单击按钮并加载同一页面,如何存储其他值? 这就是我所做的:

<?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>

运动
元素:

每个http请求php都将从头开始使用所有变量执行脚本。您必须使用或
静态
变量在请求之间保存值
要在
$\u会话中存储数组
只需将其分配给键:

$_SESSION["myStack"] = array();
$_SESSION["myStack"][] = 1;
$_SESSION["myStack"][] = 2;

在脚本的顶部有一个重置。重新加载后,堆栈将为空。您还必须将堆栈保存到会话变量中。

以下是使用会话存储阵列的代码:

<?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>

运动
元素:

您的值没有存储在HTTP请求之间,您必须使用会话变量来存储它们。我以前尝试过使用会话,但我不知道如何在会话上存储多个值。。我只能存储1,不能存储数组。。请演示..哇。。推成功了。。我做到了:谢谢!还有一个:如何做流行音乐?或者如何从会话中删除最后一个值?array_pop($_SESSION['myStack'])哇。。那奏效了。。非常感谢!:)