2017-03-06 2 views
1

Ich bin wirklich neu in PHP. Ich halte mich bei Java für gut, wollte aber mehr in Web-Sachen. Ich mag HTML und CSS gut genug, aber ich habe eine Menge Probleme mit PHP.Array und Schleife PHP

Ich schreibe einen wirklich grundlegenden PHP-Code. Ich möchte, dass es Informationen von einem Benutzer (via Formular) bekommt und es zu einem Array in PHP (POST) hinzufügt. Ich möchte dann das Array als Sitzungsvariable speichern und eine for-Schleife schreiben, die jeden Index in einer HTML-Liste ausgibt.

PROBLEME:
1. ich nicht einen guten Griff auf SESSION hat so nicht sicher, wie das Array als Session-Variablen zu speichern. 2. Ich bin mir nicht sicher, wie man einen bestimmten Index eines Arrays in PHP referenziert. Ich habe es hier auf eine Java-Art gemacht, aber das muss sich ändern.

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

Sie sind nicht in Javascript-Welt hier! 'for (i <$ stack.length)' wird 'foreach ($ stack als $ v) {print $ v; } ' – JustOnUnderMillions

+0

Sie haben in Java-Art getan ... aber Sie müssen ändern, warum? – Smit

+0

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

Antwort

1

Um Session-Variablen zuzugreifen, ist einfach:

  1. Zuerst Sie die Methode session_start() (Stellen Sie sicher, rufen müssen, rufen Sie es, vor dem Senden eines HTTP-Headers). Nachdem Sie die Methode session_start() aufgerufen haben, haben Sie Zugriff auf das assoziative Array $_SESSION. Sie können alles an dieses Array anhängen.

Die Syntax der for-Schleife in PHP ist wie folgt:

foreach (array_expression as $value) 
    statement 

oder

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

Ich hoffe, dass es hilft.

1

einfach den Code schnell bearbeiten Sie haben, ist es ein wenig praktikabel zu machen:

Html-Code

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

Php Code

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

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

Unter der Annahme, dies alles in welcome.php ist.

1

Lassen Sie uns zunächst die Codezeilen in PHP sehen haben Sie geschrieben:

I.

$stack = array(""); 

Dies schafft eine array genannt $stack mit einem einzelnen Element von "". $stack[0] hat den Wert "". Sie können die Elemente eines zugehörigen array, wie dieser Name:

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

In diesem Fall $stack["name"] wird "value" sein.

II.Diese

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

ist falsch, da name keine Variable ist, noch ein String. Sie haben wahrscheinlich gedacht:

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

würde dies $_POST["name"] am Ende Ihres Arrays mit "" geschrieben hat, so hätte $stack[1] gewesen, was auch immer der Wert von $_POST["name"]; war.

III.

for(i < $stack.length){ 

Dies ist eine falsche Syntax. Sie haben

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

Hinweis gemeint, wie $ vor allen Variablen gesetzt wird und wie ähnlich dieser Zyklus zu einem Java ist für.

IV.

print_r($stack[i]); 

falsch, müssen Sie die das Geld ($), sonst wird Ihre Variablen nicht kooperieren.

print_r($stack[$i]); 

Sie überprüfen jedoch nicht, ob dies eine POST-Anfrage oder ein GET ist. Wenn der Benutzer die Seite lädt, wird es eine GET-Anfrage sein und wenn er die form übermittelt, wird es eine POST-Anfrage sein. Die erste (GET) Anfrage hat keine $_POST Mitglieder ($_POST wird leer sein), da die form noch nicht eingereicht wurde. Und wenn Sie überprüfen, ob es sich um eine POST-Anforderung ist, müssen Sie überprüfen, ob "name" in $_POST vorhanden ist:

<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"]; 
    } 
} 
?> 

Question1:

$_SESSION ist ein array, wie $stack. Sie können etwas tun:

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

Dies wird ein neues Element der $_SESSION mit dem Index von "name" jedoch erstellen, bevor eine solche Zuordnung, you need to make sure the session was started.

Question2:

Sie es durch den Namen des Index verweisen, wie in Java, aber in PHP können Sie Textindizes haben und wenn Sie wollen, während in Java Sie nur ganze Zahlen verwenden können.