OK、使用してiniファイルを解析した後、これにparse_ini_file
似た配列になるはずです(プロセスセクション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
}
しかし、これが機能するかどうかはわかりません。おそらく、わずかな変更が必要になるでしょう...
また、この関数をスレーブ配列の数だけ呼び出す必要があります。つまり、スレーブ配列ごとにこの関数を呼び出す必要があります。
これは、[ [ [ [ [ [][][][] ] ] ] であっても、どのサブアレイ レベルでも機能するはずです。