2012-02-02 47 views
3

是否可以刷新运行页面中的所有变量,或者我可以获得已存储一些数据的全部变量列表?刷新所有变量在php

+0

如果你要问,你的架构可能需要细化。如果你限制你的变量范围,没有太多需要跟踪的内容,并且每个范围都应该如此之小以至于变量总是被范围变化不断刷新。 – deceze 2012-02-02 13:13:46

+0

我在页面中使用了如此多的变量,我可以获取我在此页面上分配的所有变量名称吗? – 2012-02-02 13:14:08

+3

说了什么;如果您不得不使用'get_defined_vars()'来跟踪范围内的变量,那么您在该范围内的变量太多。 – cmbuckley 2012-02-02 13:17:47

回答

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

您可以使用get_defined_vars来做到这一点。

从链接的页面:

该函数返回一个包含 所有定义的变量的列表的多维数组,是他们的环境中,服务器或用户定义的 变量,范围内的是get_defined_vars()是内调用。

所以这会给你所有的变量的名称:

array_keys(get_defined_vars())