2017-12-30 40 views
-2

新しい乱数が生成されるたびに、配列を作成して値を追加しようとします。セッション配列に値を追加する

数値を生成しても配列は1つの値のままです。

<?php 

    session_start(); 

    $numbers = array(); 
    $_SESSION["numbers"] = $numbers; 

    function getNumber() 
    { 

     $getNumber = rand(1, 75); 
     return $getNumber; 
    } 

?> 

<?php 

    if (isset($_POST['submit'])) 
    { 
     $numbers[] = getNumber(); 
     array_push($_SESSION["numbers"], $numbers); 
     echo $numbers[0] . "<br>"; 
    } 

?> 

数字が生成されるたびに入力される配列を作成するにはどうすればよいですか?それとも、このためのデータベースを作成する必要がありますか?

+0

$数字で

$numbers[] = getNumber(); array_push($_SESSION["numbers"], $numbers); echo $numbers[0] . "<br>"; 

を交換して

$numbers = array(); $_SESSION["numbers"] = $numbers; 

を交換=配列(); $ _SESSION ["numbers"] = $ numbers;セッションごとに空のSESSIONが表示されます。 – halojoy

+1

'echo $ numbers [0]。 "
"; '常に1つの値を出力します –

+0

あなたはあきらめましたか? – AbraCadaver

答えて

1

これは可能ですが、array_push関数の最初の引数は配列でなければなりません。その上に、$_SESSION変数がすでに定義されているかどうかをチェックしていないので、ページが読み込まれるたびに上書きされます。

また
if (!isset($_SESSION['numbers']) { 
    $_SESSION["numbers"] = array(); 
} 

array_push($_SESSION['numbers'],$numbers); 

、あなたはovercomplexityを避けるために、次のアプローチを使用することができます。

session_start(); 
// don't use these 
//$numbers = array(); 
//$_SESSION["numbers"] = $numbers; 

function getNumber() { 
    $getNumber = rand(1, 75); 
    return $getNumber; 
} 

if(isset($_POST['submit'])) { 
    // this is probably easier and less code 
    $_SESSION["numbers"][] = getNumber(); 
} 
4

は各ページの負荷あなたの配列をリセットし、不要なラインを持っていますセッション変数を再作成します。作成する前に存在していないことを確認する必要があります。

if (!isset($_SESSION["numbers"]) $_SESSION["numbers"] = array(); 

とも

array_push($_SESSION["numbers"], getNumber()); 
echo $_SESSION["numbers"]. "<br>"; //echo all the numbers, not just the first 
0

スクリプトが実行されるたびに:

$_SESSION['numbers'][] = $numbers; 
関連する問題