不能改变数组的值在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> 
+0

...你想干什么? – rnevius 2014-10-27 16:13:47

+0

而你的问题是? – 2014-10-27 16:13:56

+5

php的变量范围是功能级别。你的'全球'电话是毫无意义的。 PHP也不会保留页面之间的变量。您的每个脚本完全/完全独立于彼此,而“全局”不会在脚本之间奇迹般地保留变量。您需要使用'$ _SESSION'或其他外部存储方法。 – 2014-10-27 16:15:00

您使用$ _GET来获取表单ID,但你说这是一个$ _ POST(方法=“POST”)的形式,这样的ID将永远不会在你的if语句符合条件。这应该可以解决它:

$formID = $_POST['id']; 

此外,ID应该是在窗体上输入它为$ _ POST,表单的实际id属性本身并不会被传递到服务器进行传递。

如果你实际上传递“?ID = X”从action属性的网址,然后请邮寄形式HTML以及。

另一件事,你不需要,不应该使用“全局”,特别是如果变量位于你调用它们的同一个文件中。

+0

谢谢 - 是的,我正在''id = 1'传递'page01.php',然后'id = 2'在'page02.php'上,然后'page03。 php'是我想要打印结果的地方。我希望我可以从每个页面检索表单信息,然后将其显示在最后一页上。这只是一个练习,因为我希望能够有20页与我刚发布的页面相同。 – user1574598 2014-10-27 16:53:15

+0

我仍然希望看到您的表单HTML。 – vcanales 2014-10-27 17:02:45

+0

对不起,是的,我刚刚编辑我的帖子来显示我的所有代码。 – user1574598 2014-10-27 17:03:30

我认为你不需要的page03.php。只是死或返回您的formHandler.php中的代码(HTML)。

也许这可以帮助你太:

$_SESSION

+0

谢谢,我会检查出来的:-) – user1574598 2014-10-27 16:34:09

您不必为全局变量在这里,所有的代码是相同的范围内。