2017-03-06 4 views
1

私は本当にPHPの新機能です。私は自分自身をJavaでも問題ないと思っていますが、Webにもっと慣れたいと思っていました。私はHTMLとCSSが十分に好きですが、私はPHPで多くの問題を抱えています。配列とループPHP

私は本当に基本的なPHPコードを書いています。私はそれがフォームからユーザーから情報を取得し、php(POST)の配列に追加したい。次に、配列をセッション変数として格納し、HTMLリストの各インデックスを出力するforループを作成します。

問題:
1.私はSESSIONで良いのハンドルを持っていないので、セッション変数として配列を格納する方法がわからないでください。 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連想配列にアクセスできます。この配列に何かを追加することができます。

次のように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のコードの行を見てみましょう:

I.

$stack = array(""); 

はこの""の一つの要素と呼ばれるarray$stackを作成します。 $stack[0]の値は""になります。あなたはこのように、関連するarrayの要素に名前を付けることができます。

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

この場合$stack["name"]"value"になります。

II。

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

nameは変数でも文字列でもないので、これは間違っています。あなたは、おそらく意味:$_POST["name"];の値が何であっても

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

これはあなたの配列が""を持つの終わりに$_POST["name"]を書かれているだろう、そう$stack[1]はされていると思います。

III。

for(i < $stack.length){ 

これは誤った構文です。あなたは$は、すべての変数の前とどのように似て、これはサイクルのためのJavaにあるに置かれているか

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

注意を意味しています。

IV。

print_r($stack[i]); 

正しくない、あなたはそれ以外の場合は、あなたの変数が協力しないだろう、現金($)が必要です。

print_r($stack[$i]); 

ただし、POSTリクエストかGETかはチェックしないでください。ユーザーがページをロードすると、それはGETリクエストになり、formを送信するとPOSTリクエストになります。 formがまだ提出されていないため、最初の(GET)リクエストには$_POSTのメンバーがありません($_POSTは空になります)。そして、あなたはそれが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"]; 
    } 
} 
?> 

をQuestion1:$_SESSION

$stackのように、 arrayです。あなたはこのような何かを行うことができます。

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

これは、このような割り当て、you need to make sure the session was started前に、しかし、"name"の指標と$_SESSIONの新しい要素を作成します。

Question2:

あなたはJavaで使用すると、整数のみを使用することができますが、単にJavaでのように、しかし、PHPであなたは、同様にあなたがしたい場合は、テキストインデックスを持つことができ、インデックスの名前でそれを参照。