@@ -11,16 +11,15 @@ class ArrayDeduplicator
11
11
*/
12
12
public function dedupeSpecificSettings (array $ settingNames , array $ settings ): array
13
13
{
14
+ $ processedSettings = [];
15
+ foreach ($ settingNames as $ settingName ) {
16
+ $ processedSettings [$ settingName ] = isset ($ settings [$ settingName ])
17
+ ? $ this ->dedupeArrayOfArrays ($ settings [$ settingName ])
18
+ : null ;
19
+ }
20
+
14
21
return array_filter (
15
- array_combine (
16
- $ settingNames ,
17
- array_map (
18
- fn ($ settingName ) => isset ($ settings [$ settingName ])
19
- ? $ this ->dedupeArrayOfArrays ($ settings [$ settingName ])
20
- : null ,
21
- $ settingNames
22
- )
23
- ),
22
+ $ processedSettings ,
24
23
fn ($ val ) => $ val !== null
25
24
);
26
25
}
@@ -32,27 +31,12 @@ public function dedupeSpecificSettings(array $settingNames, array $settings): ar
32
31
* @return array
33
32
*/
34
33
public function dedupeArrayOfArrays (array $ data ): array {
35
- $ encoded = array_map ('json_encode ' , $ data );
34
+ $ encoded = [];
35
+ foreach ($ data as $ item ) {
36
+ $ encoded [] = json_encode ($ item );
37
+ }
36
38
$ unique = array_values (array_unique ($ encoded ));
37
- // Original code - not passing Codacy
38
- // $decoded = array_map(
39
- // fn($item) => json_decode((string) $item, true),
40
- // $unique
41
- // );
42
- // Experiment 1
43
- // $decoded = array_map(
44
- // 'json_decode',
45
- // $unique,
46
- // array_fill(0, count($unique), true) // force decoding as associative array
47
- // );
48
-
49
- // Experiment 2
50
- // $decoded = [];
51
- // array_walk($unique, function($item) use (&$decoded) {
52
- // $decoded[] = json_decode((string) $item, true);
53
- // });
54
-
55
- // Experiment 3
39
+
56
40
$ decoded = [];
57
41
foreach ($ unique as $ item ) {
58
42
$ decoded [] = json_decode ((string ) $ item , true );
0 commit comments