在php中将master数组的相同值与slave数组相结合

时间:2012-05-04 10:18:51

标签: php arrays multidimensional-array

我有一个主阵列和多个从属阵列,我需要在相同的数组键上替换值的函数。

示例:

主数组:

$master = array(**"a"=>"master a"**,**"b"=>"master b"** "c"=>"master c");

slave数组:

$slave_a = array("s1"=>array(**"a"=>"slave a"**,"f"=>"slave f"));
$slave_b = array("s2"=>"slave" **"b"="slave b"**);

我需要函数来过滤从属数组,如下所示:

$slave_a to be array("s1"=>array(**"a"=>"master a"**,"f"=>"slave f"));
$slave_b to be array("s2"=>"slave" **"b"="master b"**);

Тhanks提前抱歉我的英语不好

1 个答案:

答案 0 :(得分:1)

好的,所以在使用parse_ini_file解析ini文件之后你应该得到与此类似的数组(当使用进程部分为TRUE时):

$first_ini = array(
    'MAIN' => array(
        'lib' => 'lib_folder',
        'bin' => 'bin_folder',
        'usr' => 'usr_folder',
        'etc' => 'etc_folder'
    )
);

$second_ini = array(
    'alib' => 1,
    'abin' => 0,
    'ausr_other' => 'usr/tree'
);

$master_ini = array(
    'lib' => 'lib_other',
    'abin' => 1
);

然后你可以使用这个简单的功能(未经测试):

function combine_master_with_slave($master, $slave) {
    foreach($slave as $key => $val) { // we will loop through slave array
        if(is_array($val)) { // if the value is an array use recursion
            $slave[$key] = combine_master_with_slave($master, $val);
        }
        if(isset($master[$key])) { // if master array contains the same key as a slave array, replace it's value by the master's one
            $slave[$key] = $master[$key];
        }
    }
    return $slave; // finaly return the processed slave array
}

但我真的不确定这是否有效,可能需要稍作修改......

此外,您必须调用此函数的次数是您拥有的多个从属数组,或者换句话说,您必须为每个从属数组调用此函数。

这适用于任何子阵列级别,即使是[[[[[[] [] [] []]]]]]。