2011-12-27 43 views
0

在此函数中使用静态$ var可行,但我想知道是否有更有效的方式来处理这种情况。在PHP函数中使用静态变量

function static_test() { 
    static $var = FALSE; 
    if (! $var) $var = date('Ymd'); 
    // do some stuff with $var 
} 

我想知道是否有可能做更接近这个...或其他声明静态$ var。

function static_test() { 
    static $var = date('Ymd'); 
    // do some stuff with $var 
} 

你会怎么做?

+4

什么是你真正想达到什么目的? – bobbymcr 2011-12-27 00:34:40

+0

我认为这是一个很好的阅读你http://www.php.net/manual/en/language.variables.scope.php,特别是它谈论静态变量搜索页面上的“使用静态变量”你不能用一个表达式来声明一个静态变量,它甚至有一些很好的例子 – rroche 2011-12-27 00:47:00

+0

我想不出比上面第二个例子更好或者更明确的解释方法。我想知道是否有可能用函数的值声明一个静态变量。我知道它可以像第一个例子那样做。 – Poe 2011-12-27 00:47:33

回答

1

第二个选项几乎没有问题。正如你可以在这里阅读:http://www.php.net/manual/en/language.variables.scope.php

... [静态变量]只能在函数第一次调用初始化...

所以没有必要为这一段代码: if (! $var) $var = date('Ymd');

然而,你需要一个虚拟:

$dummy=date('Ymd'); static $var=$dummy;

+0

谢谢@Alfredo采取现在可以用一个有效的选项来回答这个问题,而不是降低投票率并留下一个非建设性的评论。 – Poe 2011-12-27 01:05:28

+0

您是否测试了$ var的$ dummy初始化?我有我的疑惑,因为它特别说明不喜欢表达式的值, – rroche 2011-12-27 01:21:57

+0

@rroche,我没有测试它。由于这个问题被低估,我没有进一步讨论。我决定,我的第一个例子工作将是我继续编写它的方式,如果我需要一个函数中的静态变量。 – Poe 2011-12-27 01:33:31

0

第二个例子根本不在PHP语法中。我讨厌静态var的用法,但尤其在这种情况下。我会用一个班。