在这个代码分支中,我试图用下面的简写版本重写已注释掉的语句(有效)。可能吗?我的尝试抛出了一个错误:
解析错误:语法错误,意外'['
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;
}
答案 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'};
除非绝对必要,否则我也会避免将子阵列变成对象。