刷新php中的所有变量

时间:2012-02-02 13:10:30

标签: php

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

2 个答案:

答案 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())