2013-08-28 1 views
0

get_defined_vars()을 사용하여 페이지에 선언 된 변수를 얻을 수 있음을 알고 있지만 포함 페이지에 선언 된 변수 만 필요합니다.포함 페이지에서만 변수를 가져 오는 방법 (포함 페이지 제외)?

//Get variables of containing page only 
$mainPage = get_defined_vars(); 

//Include new page 
include "somepage.php"; 

//Get variables combined for include and my page 
$sothPages = get_defined_vars(); 

//Find out keys included page 
$includeKeys = array_diff_key($bothPages, $mainPage); 

//Now loop through and use only those keys 
.... 

을하지만 보인다 조금 (I 여러 페이지를 포함하고 각각에 대해이 작업을 다시 실행해야 특히 경우 - $mainPage 배열이 성장을 유지합니다) 지저분한 느린 :

는 내가이 작업을 수행 할 수 있습니다 알고 있습니다. 더 좋은 방법이 있습니까?

주 : 등록 정보 파일에서 페이지는 목록에서 동적으로 포함되어 있기 때문에 코드에 $_filename라는 변수가없는 당신을 가정 앞서

답변

1

을 포함하는 시간을 알 수 없습니다 파일 :

function getVarsFromPHPFile($_filename) { 
    include $_filename; 
    unset($_filename); 
    return get_defined_vars(); 
} 

$includeKeys = getVarsFromPHPFile('somepage.php'); 

이것은 당신이 global으로 변수를 선언하지 않는 것을 제공 작동합니다.

물론 somepage.php을 배열로 반환하면 (return array(...);처럼) $includeKeys = include 'somepage.php';을 대신 할 수 있습니다.

+0

고맙습니다! 그건 완벽하게 작동합니다. 나는 함수 내에서 호출하는 것을 깨닫지 못했다. (내가하려고했던) 함수 내에 포함되거나 선언 된 것으로 만 제한 할 것이다. –