所以我正在建立this question about multidimensional associative array of arrays。我想出的是解决问题的一种非常简单易行的方法。以下数组:
$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'数组
我认为我的逻辑是合理的:
如果密钥是导航,请执行此操作。
基本上我在这种情况下遇到数组的范围问题,所以我如何才能使它只看到key => $ options ['navigation']中的值和任何其他数组,而不是$ options中的数组?
答案 0 :(得分:0)
使用==
代替=
来比较值。
编辑:那就是说,如果你只对一把钥匙感兴趣,为什么要使用foreach
?
if( is_array($options['navigation'])) {
foreach($options['navigation'] as $value) {
if( is_array($value)) echo implode(",",$value);
}
}
答案 1 :(得分: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);
}