是否可以刷新正在运行的页面中的所有变量,或者我是否可以获得已存储某些数据的所有变量列表?
答案 0 :(得分:4)
看看
get_defined_vars()
http://php.net/manual/en/function.get-defined-vars.php
如果您想打印完整的变量列表(包括超级全局):
print_r(array_keys(get_defined_vars()));
另外,正如其他人在评论中提到的那样,如果你需要这个,你想要考虑减少你正在使用的变量的数量。根据我的经验,三种最简单的方法是在适当的时候覆盖变量,例如(愚蠢的例子):
$subtotal = 0;
for($i=0;$i<10;$i++){
$subtotal = $subtotal + $i;
}
$total = $subtotal;
可写得更好:
for($total=0;$total <10;$total++){
//nothing, I'm just itterating
}
允许你有一个变量而不是三个变量(这也会减少内存分配)。另一个有用的技巧是将相关变量存储在数组或对象中。例如,而不是:
$number_of_widgets = 10;
$size_of_widgets = '120cm';
$cost_of_widgets = '$10.00';
$number_of_cogs = 13;
$size_of_cogs = '40cm';
$cost_of_cogs = '$3.00';
如果将它们添加到关联数组中,则更容易跟踪(并帮助防止意外的变量覆盖):
$widgets = array('quantity'=>10,'size'=>'120cm','cost'=>'$10.00');
$cogs = array('quantity'=>13,'size'=>'400cm','cost'=>'$3.00');
最后,如果您的变量不会被修改(并且不是数组),只需使用定义的常量:
define('MAX_WIDGET_QUANTITY',300);
这样做的好处是:(a)如果您想要更改这些约束,将来管理起来非常容易,(b)它可以在全球范围内自动获得,(c)它使代码更易于阅读,因为很明显它应该是一个固定值,不应该被修改。
还有其他一些技巧,但这些通常会让你在变量可管理性方面走得很远。
答案 1 :(得分:1)
您可以使用get_defined_vars执行此操作。
从链接页面:
此函数返回包含列表的多维数组 所有已定义的变量,无论是环境,服务器还是用户定义的变量 变量,在调用get_defined_vars()的范围内。
所以这会给你所有变量的名称:
array_keys(get_defined_vars())