在多维数组中寻址项的快捷方式?

时间:2011-01-31 21:56:08

标签: php multidimensional-array

在这个代码分支中,我试图用下面的简写版本重写已注释掉的语句(有效)。可能吗?我的尝试抛出了一个错误:

解析错误:语法错误,意外'['

if(is_category())
    {
    /*  
        $my_category_ads = get_option('mycategory_fields');
        if($my_category_ads[get_query_var('cat')]['my_cat_ads']) return;
    */
    if(get_option('mycategory_fields')[get_query_var('cat')]['my_cat_ads']) 
    return;
    }

2 个答案:

答案 0 :(得分:3)

PHP中目前不支持函数中的数组解除引用(您的快捷语法get_option()[][])(但它将在未来的版本中出现)。

您注释掉的代码(将get_option()分配给var然后将其编入索引)是最短的方法。但是,我建议你适当地缩进它并在适当的时候将它分成几行;否则它很难读懂。

以下是WordPress's coding standards的关注方式(当然,您不必自己关注):

if ( is_category() ) {
    $my_category_ads = get_option('mycategory_fields');

    if ( $my_category_ads[get_query_var('cat')]['my_cat_ads'] )
        return;
}

答案 1 :(得分:0)

可行的解决方法是返回ArrayObject结果(使用:: ARRAY_AS_PROPS)。可以使用array []或attribute->访问它们。语法相似。在你的情况下,它看起来不会很迷人:

get_option('mycat')->{get_var('cat')}->{'my_cat_sleeps'};

除非绝对必要,否则我也会避免将子阵列变成对象。