Skip to content

Commit 987d550

Browse files
committed
MAGE-1383 Experiment by switching all array_map calls to imperative for loops
1 parent 9dff177 commit 987d550

File tree

1 file changed

+13
-29
lines changed

1 file changed

+13
-29
lines changed

Helper/ArrayDeduplicator.php

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,15 @@ class ArrayDeduplicator
1111
*/
1212
public function dedupeSpecificSettings(array $settingNames, array $settings): array
1313
{
14+
$processedSettings = [];
15+
foreach ($settingNames as $settingName) {
16+
$processedSettings[$settingName] = isset($settings[$settingName])
17+
? $this->dedupeArrayOfArrays($settings[$settingName])
18+
: null;
19+
}
20+
1421
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,
2423
fn($val) => $val !== null
2524
);
2625
}
@@ -32,27 +31,12 @@ public function dedupeSpecificSettings(array $settingNames, array $settings): ar
3231
* @return array
3332
*/
3433
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+
}
3638
$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+
5640
$decoded = [];
5741
foreach ($unique as $item) {
5842
$decoded[] = json_decode((string) $item, true);

0 commit comments

Comments
 (0)