合并两个 Zend_Config_Ini 实例会覆盖第一个对象中定义的数组

问题描述 投票:0回答:2

给定两个 *.ini 文件:

one.ini

[production]
someArray[] = 'one'
someArray[] = 'two'
someArray[] = 'three'

[development : production]

two.ini

[production]
someArray[] = 'four'

[development : production]

将两个 *.ini 文件加载为 Zend_Config_Ini 实例

$one = new Zend_Config_Ini(
    APPLICATION_PATH . "/configs/one.ini",
    APPLICATION_ENV,
    array('allowModifications' => true)
);

$two = new Zend_Config_Ini(
    APPLICATION_PATH . "/configs/two.ini",
    APPLICATION_ENV,
    array('allowModifications' => true)
);

$one->merge($two);
print_r($one->toArray());

合并后的输出:

Array
(
    [someArray] => Array
        (
            [0] => four
            [1] => two
            [2] => three
        )

)

是否可以以如下例所示的方式合并数组?

我知道可以通过在每个 *.ini 文件中的数组上定义数字索引来完成,但如果可能的话,我想避免这种情况。

//Ideal merge results

Array
(
    [someArray] => Array
        (
            [0] => one
            [1] => two
            [2] => three
            [3] => four
        )

)
php merge zend-framework zend-config
2个回答
1
投票
$new = new Zend_Config(array_merge_recursive($one->toArray(), $two->toArray()));
var_dump($new->toArray());

应该可以了。


0
投票

您可以执行以下两种解决方案之一:

$config = new Zend_Config($two->asArray() + $one->asArray()); 
var_dump($config->asArray()); 

$config = new Zend_Config(array_merge($one->asArray(),  $two->asArray()));  

var_dump($config->asArray()); 
© www.soinside.com 2019 - 2024. All rights reserved.