如何判断是否设置了$Query_var?

时间:2011-01-28 作者:Evan Yeung

我厌倦了使用isset($queryvar) 但这不起作用,所以我实现了自己的功能qv_isset, 但当$ch 设置为0。

$cls = get_query_var(\'cls\');
$ch = get_query_var(\'ch\');

function qv_isset($var) {
    if($var == \'\') { return false; 
    } else { return true; }
}

if(qv_isset($cls) && qv_isset($ch)) {
    mcs_textbook_chapter($dialect, $cls, $ch);
} elseif(qv_isset($cls)) {              
    mcs_textbook_chapter($dialect, $cls);
} else {
    mcs_textbook($dialect);
}

4 个回复
SO网友:onetrickpony

使用indentical 比较运算符:

if(get_query_var(\'cls\') !== \'\' && get_query_var(\'ch\') !== \'\') {
    mcs_textbook_chapter($dialect, $cls, $ch);
} elseif(get_query_var(\'cls\') !== \'\') {              
    mcs_textbook_chapter($dialect, $cls);
} else {
    mcs_textbook($dialect);
}

SO网友:hakre

如果您真的想知道是否设置了WordPress查询变量,您需要直接检查它。

所有集合查询变量都存储在WP\\U查询类的全局可访问数组中。

它有一个绑定到全局$wp_query 变量考虑到这一点,可以创建qv_isset() 精确工作的功能:

function qv_isset($var_name) {
    $array = $GLOBALS[\'wp_query\']->query_vars;
    return array_key_exists($var_name, $array);
}
让这件事如此简单的是array_key_exists() 返回true或false。

通常,如果要测试任何PHP变量是否已设置,可以使用isset(). 但它有一个缺点:如果变量NULL, 它会说它没有设定,即使设定了。与所写内容相当empty() 这里也可以说\'\' (空字符串),NULL, 0

无论如何,我们不需要依赖该函数来检查是否设置了queryvar,因为我们可以在这里使用array\\u key\\u exists()。

现在查看您的代码:

function qv_get($var_name, $default = null) {
    return qv_isset($var_name) ? get_query_var($var_name) : $default;
}

mcs_textbook_chapter($dialect, qv_get(\'cls\'), qv_get(\'ch\'));
或者换言之:如果您的函数已经有(那么多)可选参数,那么看看如何最好地为它提供数据。未设置的变量为NULL (就像上面用isset()所说的那样),因此将它们作为未设置的可选参数传递也是很有用的。

SO网友:MikeSchinkel

你好@imHavoc:

我可能会这样编写代码(尽管有几种有效的编写方法):

$cls = get_query_var(\'cls\');
$ch =  get_query_var(\'ch\');

if (strlen("{$cls}{$ch}")==0) {
  mcs_textbook($dialect);
} if (strlen($ch)==0) {
  mcs_textbook_chapter($dialect, $cls);
} else {
  mcs_textbook_chapter($dialect, $cls, $ch);
}

SO网友:Backie

您将要使用empty, isset失败,因为您刚刚设置了变量。空值仍然是值。

if ( empty($cls) && empty($ch) ){
    // Not set
}

结束

相关推荐

如何在WordPress上正确包含jQuery-UI效果

我一直试图在我的wordpress主题中包含jquery ui效果(更具体地说是抖动效果)。到目前为止,我只能包含jQuery脚本,但我真的不知道在哪里放置ui脚本以及如何将它们排队。这是我的密码。这显然行不通: <?php wp_enqueue_script(\"jquery\"); ?> <?php wp_enqueue_script(\"jquery-ui-core\"); ?> <?php wp_head(); ?> <lin