内爆逻辑没有按预期工作



所以我是在这个关于数组的多维关联数组的问题的基础上构建的。我想出了一个非常简单的方法来解决我的问题。以下阵列:

$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中有['navigation']而不是$options的任何其他数组呢?

使用==而不是=来比较值。

编辑:也就是说,如果你只对一个密钥感兴趣,为什么要使用foreach

if( is_array($options['navigation'])) {
    foreach($options['navigation'] as $value) {
        if( is_array($value)) echo implode(",",$value);
    }
}

基于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);
}

相关内容

  • 没有找到相关文章

最新更新