如何在未知变量名/数组名的情况下获取另一个PHP文件中的所有变量和数组
实现方案
核心思路
通过「引入目标文件前后对比已定义变量的差集」的方式,精准筛选出仅在example.php中定义的变量,完全避开全局系统变量的干扰。
具体实现代码(部署在main.php中即可)
<?php // 1. 引入目标文件前,先获取当前所有已定义变量作为基准白名单 $base_vars = get_defined_vars(); // 2. 引入example.php include 'example.php'; // 3. 引入完成后,再次获取当前所有已定义变量 $after_include_vars = get_defined_vars(); // 4. 计算变量差集,同时过滤掉我们自己定义的基准变量$base_vars本身 $example_custom_vars = array_diff_key($after_include_vars, $base_vars, ['base_vars' => 1]); // 输出结果:$example_custom_vars的键为变量名,值为对应变量/数组的内容 print_r($example_custom_vars);
方案说明
- 差集计算使用
array_diff_key仅对比变量名(数组键),不需要对比变量值,运行效率更高 - 额外过滤
base_vars是为了排除用于对比的临时变量,避免结果混入无关项 - 无需提前知道
example.php内的任何变量命名规则,无论变量名是固定还是随机生成都可以正常抓取
内容的提问来源于stack exchange,提问作者Álvaro García
相关产品推荐
相关产品推荐

