2011-01-31 16 views
0

このコードブランチでは、以下の簡略版でコメントアウトされた文を書き直そうとしています。出来ますか? 「[」機能(ショートカット構文get_option()[][])から参照外し多次元配列の項目をアドレス指定するショートカット?

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; 
    } 

答えて

3

アレイは現在、PHPでサポートされていない(それが将来的に来るの構文エラー、予期しない:

解析エラー:私の試みは、エラーがスローされますバージョン)。

コメントアウトされたコード(get_option()をvarに割り当ててインデックス付けする)は、可能な限り最短の方法です。しかし、私はあなたがそれを正しくインデントし、適切な行に分割することをお勧めします。それ以外の場合はそのまま読むのは難しいです。

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

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

私はいつもこれが許可されていない理由を疑問に思っています - それはどういうわけか、彼らがそれを禁止すると決めたいくつかの奇妙な副作用を引き起こすでしょうか? – casablanca

+0

@casablanca:私も不思議でした。おそらくちょうど過去数年間それをする方法を把握できませんでした。 – BoltClock

+0

答えをありがとう!書式設定について:私は一行で書式化したので、//コメントは意味をなさないでしょう。私は/ * * /を使用しても構わないと思いますが、私はアーカイブ用に変更すると思います。 –

0

実行可能な回避策は(と:: ARRAY_AS_PROPS)ArrayObject結果を返すことです。ここでは

はそれがWordPress's coding standards(あなたはもちろん、自分でに従う必要はありません)以下になりたい方法です。それらはarray []やattribute-> syntaxと同様にアクセスできます。これは、しかし、あなたの場合には非常に魅力的に見えるようにしません:

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

また、私はあまりにも絶対に必要な場合を除いてオブジェクトにサブアレイを回す避けるだろう。