2017-12-30 55 views
-2

새로운 난수가 생성 될 때마다 배열을 만들고 값을 추가하려고합니다.세션 배열에 값 추가

숫자를 생성하지만 배열은 하나의 값으로 유지됩니다.

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

?> 

숫자가 생성 될 때마다 채워지는 배열을 만들려면 어떻게해야합니까? 아니면 이것을 위해 DB를 만들어야합니까?

+0

= $ 숫자 배열을 교체; $ _SESSION [ "numbers"] = $ numbers; 세션마다 페이지로드가 비어 있습니다. – halojoy

+1

'echo $ numbers [0]. "
"; 항상 하나의 값을 출력합니다 –

+0

포기 했습니까? – AbraCadaver

답변

1

할 수는 있지만 array_push 함수의 첫 번째 인수는 배열이어야합니다. 그 위에는 $_SESSION 변수가 이미 정의되어 있는지 확인하지 않으므로 모든 페이지를 다시로드 할 때 변수를 덮어 씁니다.

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

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

또는, overcomplexity 방지하기 위해 다음과 같은 방법을 사용할 수 있습니다

$_SESSION['numbers'][] = $numbers; 
4

을 당신은 당신의 배열 각 페이지로드 다시 불필요한 라인이 있습니다

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(); 
} 
0

때마다 스크립트가 실행을 세션 변수를 다시 만듭니다. 생성하기 전에 존재하지 않는지 확인해야합니다.()

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

으로

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

교체하고 또한

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

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