0

だから私は配列の多次元連想配列についてのこの質問から構築しています。私が思いついたのは、私の問題を解決するための本当にシンプルで簡単な方法です。次の配列:

$options = array(
    'navigation' => array(
        'page_title' => __('Aisis', 'aisis'),
        'menu_title' => __('Aisis', 'aisis'),
        'capabillity' => 'edit_themes',
        'menu_slug' => 'aisis-core-options',
        'function' => 'some_function',
        'icon_url' => '',
        'position' => '',
        'sub_menues' => array(
            array(
                'page_title' => __('Aisis', 'aisis'),
                'menu_title' => __('Aisis', 'aisis'),
                'capabillity' => 'edit_themes',
                'menu_slug' => 'aisis-core-options',
                'function' => 'some_function',
            ), 
            array(
                'page_title' => __('Aisis', 'aisis'),
                'menu_title' => __('Aisis', 'aisis'),
                'capabillity' => 'edit_themes',
                'menu_slug' => 'aisis-core-options',
                'function' => 'some_function',
            ), 
        )
    ),
    'settings' => array(
        array(
            'option_group' => 'bla',
            'option_name' => '',
            'sanitize_call_back' => ''
        )
    ),
    'core_template' => 'path/to/admin/template.phtml'
);

その後、次のように処理されます。

foreach($options as $settings=>$option){
    if($setting = 'navigation' && is_array($option)){
        foreach($option as $option_key=>$option_value){
            var_dump($option);
            if(!is_array($option_value)){
                echo implode(',', $option);
            }
        }
    }
}

問題は:

私が述べている最後のifステートメントで、または少なくとも私がそうだと思うのは、$ options ['navigation']のキーの値が配列でない限り、配列を内包して値を返します。それはすべて期待どおりに機能します。それを受け入れると、ifステートメントのために「すべきではない」「配列から文字列への変換」が得られます。

だから私の簡単な質問は:

キーの値が配列でない限り、$ options ['navigation']を実装するにはどうすればよいですか?

私は正しい方向に進んでいると思いました....

また、そのことに注意してください。var_dump($ option_values)を実行すると、他の配列が表示されるため、「sub_menues」だけでなく「settings」配列も表示されます。

私の論理は次のように健全だと思いました:

キーがナビゲーションの場合は、これを行います。

基本的に、この場合、配列でスコープの問題が発生しているので、$optionsではなく$options['navigation']でkey=>値と追加の配列のみを確認するにはどうすればよいですか?

4

2 に答える 2

0

Kolinkのソリューションから構築された正しいソリューション:

$temp_array = array();
if( is_array($options['navigation'])) {
    foreach($options['navigation'] as $value) {
        if(!is_array($value)){
            $temp_array[] = $value;
        }
    }

    echo implode(',', $temp_array);
}
于 2013-02-10T19:36:19.800 に答える
0

==の代わりにを使用=して値を比較します。

編集:そうは言っても、1つのキーだけに関心があるのに、なぜを使用しているのforeachですか?

if( is_array($options['navigation'])) {
    foreach($options['navigation'] as $value) {
        if( is_array($value)) echo implode(",",$value);
    }
}
于 2013-02-10T18:47:19.373 に答える