[ 'key1' => 'dist1', 'key2' => 'dist2', 'key3' => 'dist3', ], 'indexedArray1' => [ 'dist1', 'dist2', 'dist3', ], ]; // Overriding array (like params.local.yml). $local = [ 'keyedArray1' => [ 'key1' => 'local1', 'key3' => NULL, 'key4' => 'local4', ], 'keyedArray2' => [ 'key1' => 'local1', ], 'indexedArray1' => [ 'local1', 'local2', ], ]; // Merged array (like merged.params.local.yml). $merged = MergeParamsCommand::mergeDeepArray([$dist, $local]); $expected = [ 'keyedArray1' => [ // Key1 : Dist value is overrided by local value. 'key1' => 'local1', // Key2 : No overriding in local, dist value is transmitted. 'key2' => 'dist2', // Key3 : Dist value is overrided with a NULL value: key3 is removed. // Key4 : No key4 in dist array, local Key4 is added. 'key4' => 'local4', ], // No Array2 in dist, local Array2 is added. 'keyedArray2' => [ 'key1' => 'local1', ], // Dist indexed array is replaced by local index array. 'indexedArray1' => [ 'local1', 'local2', ], ]; $this->assertEquals($expected, $merged); } }