forked from mepihindeveloper/phpTasks
-
Notifications
You must be signed in to change notification settings - Fork 0
/
swapMinAndMaxOfArray.php
68 lines (55 loc) · 2.35 KB
/
swapMinAndMaxOfArray.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
<?php
/**
* Ваше задание — создать массив, наполнить его случайными значениями
* (можно использовать функцию rand), найти максимальное и минимальное значение массива
* и поменять их местами.
*/
function arrayFill($arrayLenght = 0) {
$array = [];
if ($arrayLenght == 0) { $arrayLenght = rand(0, 100); }
for ($i = 0; $i < $arrayLenght; $i++) {
$array[$i] = rand(0, 100);
}
return $array;
}
/**
* Смена позиций элементов по индексам
*
* @param array $array
* @param int $fIndex Индекс первого элемента для смены
* @param int $sIndex Индекс второго элемента для смены
* @return void
*/
function swapArrayElementByIndex(&$array, $fIndex, $sIndex) {
if (!is_int($fIndex) || !is_int($sIndex)) return false;
$temp = $array[$fIndex];
$array[$fIndex] = $array[$sIndex];
$array[$sIndex] = $temp;
}
/**
* Смена позиций элементов по элементам
*
* @param array $array
* @param array $fELem Первый элемент ['index' => , 'value' => ]
* @param array $sElem Второй элемент ['index' => , 'value' => ]
* @return void
*/
function swapArrayElement(&$array, $fELem, $sElem) {
$isIndexesIsset = (isset($fELem['index']) && isset($sElem['index']));
$isValuesIsset = (isset($fELem['value']) && isset($sElem['value']));
if (!$isIndexesIsset || !$isValuesIsset) return false;
$array[$fELem['index']] = $sElem['value'];
$array[$sElem['index']] = $fELem['value'];
}
$array = arrayFill();
$min = ['index' => array_keys($array, min($array))[0], 'value' => min($array)];
$max = ['index' => array_keys($array, max($array))[0], 'value' => max($array)];
echo "Минимальный элемент с индексом {$min['index']} и значением {$min['value']}\n";
echo "Максимальный элемент с индексом {$max['index']} и значением {$max['value']}\n";
// $swapResult = swapArrayElementByIndex($array, $min['index'], $max['index']);
$swapResult = swapArrayElement($array, $min, $max);
if ($swapResult !== false) {
print_r($array);
} else {
echo 'Произошла ошибка при смене элементов местами';
}