-
Notifications
You must be signed in to change notification settings - Fork 574
Expand file tree
/
Copy patharray-search-existing.php
More file actions
81 lines (72 loc) · 1.73 KB
/
array-search-existing.php
File metadata and controls
81 lines (72 loc) · 1.73 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php declare(strict_types=1);
namespace ArraySearchExisting;
use function PHPStan\Testing\assertType;
/**
* @param list<string> $list
*/
function arraySearchNotFalse(array $list, string $s): void
{
$key = array_search($s, $list);
if ($key !== false) {
assertType('non-empty-list<string>', $list);
assertType('string', $list[$key]);
}
}
/**
* @param array<string, int> $map
*/
function arraySearchStringKey(array $map, int $needle): void
{
$key = array_search($needle, $map);
if ($key !== false) {
assertType('int', $map[$key]);
}
}
/**
* @param list<string> $list
*/
function arraySearchReversedComparison(array $list, string $s): void
{
$key = array_search($s, $list);
if (false !== $key) {
assertType('string', $list[$key]);
}
}
/**
* @param array<string, int|string> $arr
*/
function arraySearchStrictNarrowsToNeedle(array $arr, int $needle): void
{
$key = array_search($needle, $arr, true);
if ($key !== false) {
assertType('non-empty-array<string, int|string>', $arr);
assertType('string', $key);
assertType('int', $arr[$key]);
} else {
assertType('array<string, int|string>', $arr);
assertType('false', $key);
assertType('*ERROR*', $arr[$key]);
}
assertType('array<string, int|string>', $arr);
assertType('string|false', $key);
assertType('int|string', $arr[$key]);
}
/**
* @param array<string, int|string> $arr
*/
function arraySearchLooseKeepsValueType(array $arr, int $needle): void
{
$key = array_search($needle, $arr);
if ($key !== false) {
assertType('int|string', $arr[$key]);
}
}
/**
* @param array<string, int|string> $arr
*/
function arraySearchStrictInlineAssign(array $arr, int $needle): void
{
if (($key = array_search($needle, $arr, true)) !== false) {
assertType('int', $arr[$key]);
}
}