2014-07-10 3 views
-1

PHP 파일에 변수 배열을 선언하고 파일을 포함시킨 후 배열의 값을 변경했습니다. 그런 다음 배열 변수에 업데이트 된 값이 있으므로 3 번째 파일에서 액세스하면 새 배열 값을 얻게됩니다. 내가 어떻게 해? 온라인 퀴즈 페이지에서 필요합니다. 사용자가 데이터베이스에서 페이지를로드 할 때마다 임의의 문제를 가져 왔습니다. 제출 한 후, 결과를 표시하기 위해 submit.php 페이지 (제출 후 재 지정 된 페이지)에서 가져온 문제점의 ID 번호가 필요합니다. 문제점 페이지의 배열에 문제 ID를 저장했으며 submit.php 페이지에서 배열에 액세스 할 수 있기를 원했습니다.PHP에서 여러 파일로부터 파일에 선언 된 업데이트 된 변수에 접근하기

+0

변수를 전역 적으로 저장하고자하는 것 같습니다. 파일에 쓰거나 데이터베이스에 저장하여 그렇게 할 수 있습니다. 파일을 포함 할 때마다 내용이 기본적으로 실행되므로 변수 파일에서 변수가 초기화되면 영구적 인 내용이됩니다. – Max

답변

0

배열에 따라 원하는 동작에 따라 다릅니다.

웹 응용 프로그램을 탐색하는 사람의 인스턴스와 관련된 배열 인 경우 각 사람이 자신이 원하는대로 자신의 변수를 가지고있는 경우에는 세션을 사용하여 설정하고 싶을 것입니다. $_SESSION 전역 변수. 이 같은 아마 뭔가 : 배열의 데이터가 응용 프로그램에 액세스하는 사람에 의해 세계적으로 액세스 할 수 있어야합니다 경우

//file1.php 
<?php 
    session_name("applicationName"); //give your session a unique and static name, so that other apps on your server don't interfere 
    session_start(); //must always start the session before working with session variables 
    $_SESSION['data'] = array(1, 3, 6, 9); //set your array into the session global 
    include("file2.php"); 
?> 

//file2.php 
<?php 
    $_SESSION['data'][0]++; //for demonstration purposes, increment the first key of the array 
?> 

//file3.php 
<?php 
    session_name("applicationName"); //same session name 
    session_start(); 
    print_r($_SESSION['data']); //shows the contents of your array, 
     //which will now contain 2, 3, 6, 9 
?> 

그러나, 당신이 당신의 배열 정보를 저장하는 데이터베이스를 사용하거나 APC로 볼 수도 있습니다. 플랫 파일을 단순히 사용하는 것의 위험은 한 사용자가 쓰기 작업을 유발할 수 있고 다른 사용자는 읽기 작업을 유발할 수 있으므로 예측할 수없는 결과가 발생할 수 있습니다. MySQL과 같은 데이터베이스와 APC와 같은 캐싱 확장 기능은 대개 선착순으로 작동하며이 문제로 어려움을 겪지 않습니다. 데이터가 중요한 경우

, 데이터가 서버를 다시 시작 살아남을 것 같은 데이터베이스를 사용 :

//store the variable to a row in the database 
$query = $dbconn->query("INSERT INTO tblVariables(variableName, variableValue) 
    VALUES ('someVariable', '".$dbconn->real_escape_string(serialize($yourArray))."';"); 

//retrieve the variable from that row 
$query = $dbconn->query("SELECT variableValue FROM tblVariables WHERE variableName = 'someVariable';"); 
if($query) { 
    while($row = $query->fetch_assoc()) 
     $yourArray = deserialize($row['variableValue']); 
} 

serialize()/deserialize()이 하나의 저장 가능한 문자열로 배열이나 객체를 통합하는 편리한 방법입니다. 데이터베이스 열이 충분한 크기의 VARCHAR이거나 TEXT인지 확인하십시오.

데이터 자연 임시 경우, APC는 트릭을 할 수는 서버에서 사용할 수 제공 :

//store the array in APC 
apc_store('variableName', $yourArray); 

//retrieve the array from APC 
$yourArray = apc_fetch('variableName'); 

APC는 serialize()를 사용할 필요가 없습니다.

데이터베이스 또는 APC 애플리케이션의 위치는 무엇인지 알아야하지만 세션 예제는 질문에 따라 코드를 구성하는 방법을 설명하기에 충분해야합니다.

+0

고마워. 그것은 일했다 !!! – sanjeev1779

관련 문제