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
....

但这似乎有点混乱和缓慢(特别是如果我包含多个页面并且必须为每个页面重做 -$mainPage数组将继续增长)。有没有更好的办法?

注意:页面是从属性文件的列表中动态包含的,因此代码不会提前知道要包含哪些页面

4

1 回答 1

1

假设您没有$_filename在文件中命名的变量:

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

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

如果您没有将变量声明为global.

当然,如果您更改somepage.php为返回一个数组(如 中return array(...);),您也可以这样做$includeKeys = include 'somepage.php';

于 2013-08-28T17:26:06.367 回答