Php 单页提交时堆栈数组丢失以前的值
我试图在PHP中执行push和pop堆栈数组,但只存储最后一个值。即使我再次单击按钮并加载同一页面,如何存储其他值? 这就是我所做的: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
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'])哇。。那奏效了。。非常感谢!:)