不能改变数组的值在PHP
我有我使用的一些值存储从$_POST
变量的全局数组变量。因为我在if
声明中修改了它们,所以我使用了global
这个词。我已经将该阵列填充为array(0,1)
。鉴于在我的if
声明中修改了这些值,我仍然获得了我开始使用的初始化值。不能改变数组的值在PHP
编辑:
这里是我的formHandler.php
代码:
// get form ID
$formID = $_GET['id'];
// create a global array
$results = array();
// check to see what ID has be retrieved
if ($formID == 1) {
$value = $_POST['emotion'];
$results[0] = $value;
// 302 redirect
header("location: page02.php?results1=$results[0]");
}
else if ($formID == 2) {
$value = $_POST['emotion02'];
$results[1] = $value;
// 302 redirect
header("location: page03.php?&results2=$results[1]");
}
这里是我的page01.php
代码:
<h1>This is Page 01</h1>
<form id="form" action="formHandler.php?id=1" method="POST">
<p><input type="radio" value="happy" name="emotion">Happy
<input type="radio" value="excited" name="emotion">Excited
<input type="radio" value="angry" name="emotion">Angry
<input type="radio" value="frustrated" name="emotion">Frustrated
<input type="radio" value="miserable" name="emotion">Miserable
<input type="radio" value="sad" name="emotion">Sad
<input type="radio" value="tired" name="emotion">Tired
<input type="radio" value="calm" name="emotion">Angry</p>
<p><input type="submit" name="submit" value="Submit"></p>
这里是我的page02.php
代码:
<h1>This is Page 02</h1>
<form id="form" action="formHandler.php?id=2" method="POST">
<p><input type="radio" value="happy" name="emotion02">Happy
<input type="radio" value="excited" name="emotion02">Excited
<input type="radio" value="angry" name="emotion02">Angry
<input type="radio" value="frustrated" name="emotion02">Frustrated
<input type="radio" value="miserable" name="emotion02">Miserable
<input type="radio" value="sad" name="emotion02">Sad
<input type="radio" value="tired" name="emotion02">Tired
<input type="radio" value="calm" name="emotion02">Angry</p>
<p><input type="submit" name="submit" value="Submit"></p>
这里是我的page03.php
代码:
<?php include("formHandler.php"); ?>
<html>
<head>
<title>Audio Survey</title>
</head>
<body>
<h1>Thanks for your submission</h1>
<?php
$results = array();
$results[0] = $_GET['results1'];
$results[1] = $_GET['results2'];
echo "<p>" . $results[0] . " " . $results[1] . "</p>";
?>
</body>
</html>
您使用$ _GET来获取表单ID,但你说这是一个$ _ POST(方法=“POST”)的形式,这样的ID将永远不会在你的if语句符合条件。这应该可以解决它:
$formID = $_POST['id'];
此外,ID应该是在窗体上输入它为$ _ POST,表单的实际id属性本身并不会被传递到服务器进行传递。
如果你实际上传递“?ID = X”从action属性的网址,然后请邮寄形式HTML以及。
另一件事,你不需要,不应该使用“全局”,特别是如果变量位于你调用它们的同一个文件中。
谢谢 - 是的,我正在''id = 1'传递'page01.php',然后'id = 2'在'page02.php'上,然后'page03。 php'是我想要打印结果的地方。我希望我可以从每个页面检索表单信息,然后将其显示在最后一页上。这只是一个练习,因为我希望能够有20页与我刚发布的页面相同。 – user1574598 2014-10-27 16:53:15
我仍然希望看到您的表单HTML。 – vcanales 2014-10-27 17:02:45
对不起,是的,我刚刚编辑我的帖子来显示我的所有代码。 – user1574598 2014-10-27 17:03:30
您不必为全局变量在这里,所有的代码是相同的范围内。
...你想干什么? – rnevius 2014-10-27 16:13:47
而你的问题是? – 2014-10-27 16:13:56
php的变量范围是功能级别。你的'全球'电话是毫无意义的。 PHP也不会保留页面之间的变量。您的每个脚本完全/完全独立于彼此,而“全局”不会在脚本之间奇迹般地保留变量。您需要使用'$ _SESSION'或其他外部存储方法。 – 2014-10-27 16:15:00