2010-06-28 5 views
7

나는 이런 식으로 뭔가 보이는 기능 하바 배열과 ("config.php를") 필요로하지만 아직 정의되지 않은 변수 오류 얻을 :이처럼 보일내가 가지고

require("config.php"); 

function displayGta() 
{ 
    (... lots of code...) 

    $car = $car_park[3]; 
} 

을하고 config.php를을 :

<?php 
$car_park = array ("Mercedes 540 K.", "Chevrolet Coupe.", "Chrysler Imperial.", "Ford Model T.", "Hudson Super.", "Packard Sedan.", "Pontiac Landau.", "Duryea."); 
(...) 
?> 

이유는 통지서를받을 수 있나요 : 정의되지 않은 변수를 : car_park를?

답변

14

시도 함수에

global $car_park; 

를 추가. $ car_park의 정의를 포함 시키면, 전역 변수가 작성되고, 함수 내에서 액세스하려면 전역 변수로 선언하거나 $ GLOBALS 수퍼 글로벌을 통해 액세스해야합니다.

자세한 내용은 manual page on variable scope을 참조하십시오.

+0

문제가 해결되었습니다 : D – ganjan

+0

또는 함수 자체 내부에서 파일을 require() 할 수 있습니다. 그것도 올바른 범위에 넣을 것입니다. 나는 실제로 그렇게하는 것이 좋다고 말할 수는 없지만 요점은 : 파일을 포함 할 때 include 문이있는 범위에서 실행된다는 것입니다. –

10

폴이 무슨 일이 일어나고 있는지 설명하지만 나는 다시 설명하려고 노력할 것입니다.

변수를 만들면 특정 범위에 속합니다. 스코프는 변수가 사용될 수있는 영역입니다. I는이 함수 내에 생성되지 않았기 때문에, 변수 함수 내에서 허용되지 않습니다

$some_var = 1; 

function some_fun() 
{ 
    echo $some_var; 
} 

할 예컨대

있었다면. 이 함수 내부에서 작업하기 위해서는 아래의 예는

$some_var = 1; 

function some_fun() 
{ 
    global $some_var; //Call the variable into the function scope! 
    echo $some_var; 
} 

일을 할 수 있도록 당신은 그래서 당신이 할 수없는이 반대의 경우도 마찬가지입니다 세계 키워드를 사용해야하는 몇 가지 방법이 있습니다

function init() 
{ 
    $some_var = true; 
} 

init(); 

if($some_var) // this is not defined. 
{ 

} 

다음 이것의 주위에 그러나 가장 간단한 것 모두는 $GLOBALS 배열을 사용하고 있습니다.이 배열은 특수 변수이므로 스크립트 내 어디에서나 허용됩니다.

그래서

$GLOBALS['config'] = array(
    'Some Car' => 22 
); 

function do_something() 
{ 
    echo $GLOBALS['config']['some Car']; //works 
} 

또한 서버가 등록 전역 보안을 위해 귀하의 INI에서 해제되어 있는지 확인하십시오. http://www.php.net/manual/en/security.globals.php

1

당신은 같은 함수에 프록시 그것을 시도 할 수 :

함수 foo ($ 바) {

(코드)

$ 자동차 = $ 바 [3]

(코드)

} 그런 다음 당신이 그것을 호출 할 때

:

에코 foo는 ($ 바);

관련 문제