-
Notifications
You must be signed in to change notification settings - Fork 572
Expand file tree
/
Copy pathslevomat-foreach-array-key-exists-bug.php
More file actions
43 lines (37 loc) · 1.58 KB
/
slevomat-foreach-array-key-exists-bug.php
File metadata and controls
43 lines (37 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
namespace SlevomatForeachArrayKeyExistsBug;
use function PHPStan\Testing\assertType;
class Foo
{
public function doFoo(array $percentageIntervals, array $changes): void
{
$intervalResults = [];
foreach ($percentageIntervals as $percentageInterval) {
foreach ($changes as $changeInPercents => $itemsCount) {
if ($percentageInterval->isInInterval((float) $changeInPercents)) {
$key = $percentageInterval->getFormatted();
if (array_key_exists($key, $intervalResults)) {
assertType('non-empty-array<array{itemsCount: mixed, interval: mixed}>', $intervalResults);
assertType('array{itemsCount: mixed, interval: mixed}', $intervalResults[$key]);
$intervalResults[$key]['itemsCount'] += $itemsCount;
assertType('non-empty-array<array{itemsCount: mixed, interval: mixed}>', $intervalResults);
assertType('array{itemsCount: (array|float|int), interval: mixed}', $intervalResults[$key]);
} else {
assertType('array<array{itemsCount: mixed, interval: mixed}>', $intervalResults);
assertType('array{itemsCount: mixed, interval: mixed}', $intervalResults[$key]);
$intervalResults[$key] = [
'itemsCount' => $itemsCount,
'interval' => $percentageInterval,
];
assertType('non-empty-array<array{itemsCount: mixed, interval: mixed}>', $intervalResults);
assertType('array{itemsCount: mixed, interval: mixed}', $intervalResults[$key]);
}
}
}
}
assertType('array<array{itemsCount: mixed, interval: mixed}>', $intervalResults);
foreach ($intervalResults as $data) {
echo $data['interval'];
}
}
}