附加一个php数组,其中包含在另一个文件中设置的键/值

时间:2013-05-26 11:43:25

标签: php arrays

我试图通过添加不属于同一文件的键/值来追加数组。

例如我有这个数组:

$div_size = array(

    'Accordion' => array(
        'element1-4'=>'1/4',
        'element1-3'=>'1/3',
        'element1-2'=>'1/2',
        'element2-3'=>'2/3',
        'element3-4'=>'3/4',
        'element1-1'=>'1/1'
     ),
);

我需要补充一下:

    'blog' => array(
        'element1-4'=>'1/4',
        'element1-3'=>'1/3',
        'element1-2'=>'1/2',
        'element2-3'=>'2/3',
        'element3-4'=>'3/4',
        'element1-1'=>'1/1'
     ),

$ div_size = array()位于文件foo.php中,附加的键/值'Accordion'=> array()位于文件bar.php

这两项行动的结果必须是:

$div_size = array(

    'Accordion' => array(
        'element1-4'=>'1/4',
        'element1-3'=>'1/3',
        'element1-2'=>'1/2',
        'element2-3'=>'2/3',
        'element3-4'=>'3/4',
        'element1-1'=>'1/1'
     ),

    'blog' => array(
        'element1-4'=>'1/4',
        'element1-3'=>'1/3',
        'element1-2'=>'1/2',
        'element2-3'=>'2/3',
        'element3-4'=>'3/4',
        'element1-1'=>'1/1'
     ),
);

我要做的是在我的Wordpress父主题的admin部分添加一个额外的选项,但是额外的数组值需要来自我的子主题中的functions.php文件。

3 个答案:

答案 0 :(得分:1)

您可以使用array_merge()

$div_size = array_merge($div_size, $other_array)

答案 1 :(得分:1)

子主题的function.php在父主题之前加载。所以应该设置一个函数。请参阅WP信息:Using functions.php

在子主题的函数中声明并实现一个函数,用于创建所需的数组。称之为独特的东西。说THEMENAME_getBlogArray()

使用if ( function_exists('THEMENAME_getBlogArray()')检查正在设置的功能。如果已设置,请使用它。在你的情况下

$other_array = THEME_getBlogArray();
$div_size = array_merge($div_size, $other_array)

应该做的伎俩。 (如果需要,可以在调用函数后对其进行验证。)

希望这有帮助。

答案 2 :(得分:0)

在评论者的帮助下......这就是我为实现这一目标所做的一切。

在子Wordpress主题中,我创建了一个这样的文件,或者你可以将它添加到你的functions.php文件中。

// path to the parent theme with the array you want appended
include TEMPLATEPATH . '/whatever/some-file.php';

// the key/value you want appended
$div_size_merge = array(
    'blog' => array(
      'element1-4'=>'1/4',
      'element1-3'=>'1/3',
      'element1-2'=>'1/2',
      'element2-3'=>'2/3',
      'element3-4'=>'3/4',
      'element1-1'=>'1/1'
   ),
);

// now merge the two    
$div_size = array_merge($div_size, $div_size_merge);