-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathecho.php
125 lines (105 loc) · 2.25 KB
/
echo.php
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
# Вопрос 1. Что выведет на экран код ниже
echo (int)10 + (int)"20N" + (int)"M30" + (int)040 + (int)"1 20" + (int)1.99;
# Вопрос 2. Что выведет на экран код ниже
$a = $b = 0;
$getDigit = fn() => 2;
if (($a = $getDigit()) && $a === 2)
{
echo 'OK';
}
else
{
echo 'NO';
}
if ($b === 2 && ($b = $getDigit()))
{
echo 'OK';
}
else
{
echo 'NO';
}
# Вопрос 3. Что выведет на экран код ниже
class Single
{
public int $a = 2;
public SplFixedArray $list;
private static ?Single $instance = null;
private function __construct()
{
$this->list = SplFixedArray::fromArray([0]);
}
public static function getInstance(): Single
{
if (self::$instance === null)
{
self::$instance = new self();
}
return self::$instance;
}
}
$instanceCloned = clone Single::getInstance();
$instanceCloned->a = 3;
$instanceCloned->list->setSize($instanceCloned->a);
$instance = Single::getInstance();
echo $instance->a + $instance->list->getSize();
echo PHP_EOL;
echo $instanceCloned->a + $instanceCloned->list->getSize();
# Вопрос 4. Какая функция по поиску нечетных чисел займет МЕНЬШЕ всего места в памяти?
## Вызов функций - echo count(odd_*($ARRAY))
## Замер памяти - echo 'Peak usage: ' . round(memory_get_peak_usage() / 1024) . 'KB of memory ' . PHP_EOL . PHP_EOL;
$ARRAY = range(0, 10000);
#1.
function odd_one(array $array): array
{
$result = [];
foreach ($array as $digit)
{
if ($digit % 2 !== 0)
{
$result[] = $digit;
}
}
return $result;
}
function odd_two(array $array): array
{
foreach ($array as $key => $digit)
{
if ($digit % 2 === 0)
{
unset($array[$key]);
}
}
return $array;
}
function odd_three(array &$array): array
{
foreach ($array as $key => $digit)
{
if ($digit % 2 === 0)
{
unset($array[$key]);
}
}
return $array;
}
/**
* Данная функция вызывается как
* $obj = new stdClass;
* $obj->array = $ARRAY;
* @param object $obj
* @return array
*/
function odd_object_four(object $obj): array
{
foreach ($obj->array as $key => $digit)
{
if ($digit % 2 === 0)
{
unset($obj->array[$key]);
}
}
return $obj->array;
}