2017-03-06 86 views
1

我真的是新来的php。我认为自己在Java中是正常的,但想要更多地了解网络内容。我非常喜欢HTML和CSS,但是我在使用php时遇到了很多麻烦。数组和循环PHP

我正在写一个非常基本的PHP代码。我希望它从用户(通过表单)获取信息并将其添加到php(POST)中的数组中。然后,我想将该数组存储为会话变量,并编写一个for循环,将每个索引打印到HTML列表中。

问题:
1.我没有对会话的良好手感,所以不知道如何存储阵列作为一个会话变量。 2.我不确定如何在PHP中引用数组的特定索引。我在这里用java的方式完成了它,但这需要改变。

--CODE--

<html> 
<body> 

<form action="welcome.php" method="post"> 
Name: <input type="text" name="name"><br> 
<input type="submit"> 
</form> 

</body> 
</html> 


<?php 
$stack = array(""); 
array_push($stack, $_POST[name]); 

for(i < $stack.length){ 
print_r($stack[i]); 
} 
?> 
+1

您还不是在JavaScript世界! 'for(i <$ stack.length)'变成'foreach($ stack as $ v){print $ v; }' – JustOnUnderMillions

+0

你用java的方式完成了......但你需要改变原因吗? – Smit

+0

http://php.net/manual/en/control-structures.foreach.php –

回答

1

要访问会话变量很简单:

  1. 首先,你需要调用方法session_start()(确保,你怎么称呼它,在发送任何HTTP标头之前)。
  2. 调用session_start()方法后,您将有权访问$_SESSION关联数组。你将能够追加任何东西到这个数组中。

的for循环PHP中的语法如下:

foreach (array_expression as $value) 
    statement 

foreach (array_expression as $key => $value) 
    statement 

我希望它帮助。

1

只是为了快速更新你的代码,使之显得有些可行:

HTML代码

<html> 
     <body> 
      <form action="welcome.php" method="post"> 
     Name: <input type="text" name="name"><br> 
     <input type="submit"> 
     </form> 
    </body> 
    </html> 

PHP代码

<?php 
$stack = array(""); 
if(isset($_POST['name'])){ 
    array_push($stack, $_POST['name']); 

    for($i=0; $i < count($stack); $i++){ 
    echo($stack[$i]); 
    } 
} 
?> 

假设这是所有的welcome.php。

1

首先,让我们看到的代码PHP行你写:

$stack = array(""); 

这将创建一个名为array$stack""一个元素。 $stack[0]将具有值""。您可以命名一个相关array的元素,像这样:

$stack = array("name" => "value"); 

在这种情况下$stack["name"]"value"

二,

array_push($stack, $_POST[name]); 

这是不正确的,因为name不是一个变量,也不是一个字符串。你大概的意思是:

array_push($stack, $_POST["name"]); 

这将在有""你数组的结尾都写$_POST["name"],所以$stack[1]本来一切的$_POST["name"];的值。

三,

for(i < $stack.length){ 

这是不正确的语法。你意味着

for($i = 0; $i < count($stack); $i++){ 

$是如何把所有变量的前面,多么相似的这个周期是一个Java的。四,参考文献

print_r($stack[i]); 

不正确的,你需要的现金($),否则你的变量不会合作。

print_r($stack[$i]); 

但是,您不检查这是POST请求还是GET。当用户加载页面时,它将是一个GET请求,当他提交form时,它将是一个POST请求。第一个(GET)请求将不会有$_POST成员($_POST将为空),因为form尚未提交。如果你检查它是否是一个POST请求,则需要检查"name"是否存在于$_POST

<html> 
<body> 

<form action="welcome.php" method="post"> 
Name: <input type="text" name="name"><br> 
<input type="submit"> 
</form> 

</body> 
</html> 


<?php 
if ($_SERVER['REQUEST_METHOD'] === 'POST') { //it is a post 
    if (isset($_POST["name"])) { //name is found inside $_POST 
     echo "Name is " . $_POST["name"]; 
    } 
} 
?> 

问题1:

$_SESSIONarray,像$stack。你可以做这样的事情:

$_SESSION["name"] = $_POST["name"]; 

这将创建$_SESSION一个新的元素与"name"的指标,但是,这样的分配之前,you need to make sure the session was started

问题2:

您可以通过索引的名字引用它,就像在Java中,然而,在PHP中可以有文本索引,以及如果你想要的,而在Java中,你只能使用整数。