Get_Temporent()、PHP Switch()和比较运算符

时间:2011-05-13 作者:VicePrez

Im使用WordPress瞬态(一小时后过期)存储一个整数值。我正在尝试使用switch() 和多个case() 用于评估瞬态是否存在的语句(即true或false)。

以下是我的问题:

哪个比较运算符(=, ==, ===), 在示例2中,是否适合此上下文

$transient = get_transient( \'foobar\' );

switch( $transient ) :

    case( true ) :
        // do stuff
    break;

    case( false ) :
        // do stuff
    break;

endswitch;

例2:

$transient = get_transient( foobar );

switch( $transient ) :

    case( $transient = true ) :
        // do stuff
    break;

    case( $transient = false ) :
        // do stuff
    break;

endswitch;
提前谢谢。

3 个回复
最合适的回答,由SO网友:Scott 整理而成

它必须使用开关吗?

为什么不这样做:

if ( false === ( $value = get_transient( \'value\' ) ) ) {
     // this code runs when there is no valid transient set
} else {
    // this code runs when there is a valid transient set
}
如果a瞬态返回值,则不会返回true。它返回瞬态的值。如果未设置瞬态,则返回bool(false)

如果您使用的是交换机,则如下所示:

$transient=get\\u transient(foobar);

switch( $transient ) :

    case false:
        // transient not set
    break;

    default:
        // transient didnt return false
    break;

endswitch;

SO网友:Rarst

我想switch 这有点笨重。另外,你的第二个例子肯定不是一种方法。

$transient = get_transient( \'foobar\' );

if( false !== $transient ) { // boolean false or has no value 

    //code goes here
}
else { // any other case

   //code goes here
}
=== / !== 按值和类型进行比较,以便即使瞬态为整数0 不会考虑的false.

SO网友:Hameedullah Khan

这两个示例对于get\\u transient返回的值都是错误的。当找不到瞬态时,get\\u transient返回false,但如果瞬态值为0,它也将计算为false。

PHP switch语句总是进行松散的比较,因此在瞬态值为0的情况下,可能无法获得所需的结果。所以在这种情况下最好不要使用switch,而是使用if。

尽管示例1可以工作,但前提是您确信瞬态值永远不会被计算为false。

结束

相关推荐

在什么情况下,GET_TEMPLATE_PART()比简单使用template.php文件更可取?

在里面this post on wordpress.stackexchange.com 我问过,如第二十个主题所示,使用get\\u template\\u part()是否是推荐的最佳实践。我得到的普遍共识是,这不一定是所有情况下的最佳做法。然后,这个相关的问题是:你能给我举个例子,在哪里使用get\\u template\\u part()将是推荐的方法,而不是简单地定义单独的模板。php文件?例如,我可以定义归档。php,单个。php和页面。php;或者我可以定义循环存档。php,循环单一。php和