Задачник по PHP (с решениями) - Страница 2
мы должны написать $arr[0].
Для доступа к слову 'мир' мы должны написать $arr[1], а $arr[2] содержит в
себе '!'. Далее с помощью оператора 'точка' мы сложим три наши строки ('Привет, ',
'мир' и '!') в одну строку таким образом: $arr[0].$arr[1].$arr[2], и выведем на экран
с помощью echo.
Задача. Решим немного другую задачу: дан массив с элементами 'Привет, ',
'мир' и '!'. Необходимо записать в переменную $text фразу 'Привет, мир!', а затем
вывести на экран содержимое этой переменной.
1.
2. $arr = ['Привет, ', 'мир', '!'];
3. $text = $arr[0].$arr[1].$arr[2];
4. /*
5.
В переменной $text теперь лежит строка 'Привет, мир!'.
6.
Выведем ее на экран:
7. */
8. echo $text;
9. ?>
Дан массив ['Привет, ', 'мир', '!']. Необходимо записать в первый элемент (то
есть элемент с номером ноль) этого массива слово 'Пока, ' (то есть вместо
слова 'Привет, ' будет 'Пока, ' ).
1.
2. $arr = ['Привет, ', 'мир', '!'];
3. $arr[0] = 'Пока, '; //перезапишем первый элемент массива
4. var_dump($arr); //посмотрим на массив и убедимся в том, что он изменился
5. ?>
Дан массив с числами. Запишите в новый массив только те числа, в которых
есть цифра 5.
1.
2.
3. function getFives($sArr, String $sInt) {
4. $result = [];
5.
6. foreach ($sArr as $item)
7. if (strpos(strval($item), $sInt) !== false) $result[] = $item; 8. return $result;
9. }
10.
11. $searchInt = 5;
12. $searchArr = [2,1,4,3,5,7,6,9,8,11,10,15,29,25,52,13,51];
13.
14. echo '
';';15. var_dump(getFives($searchArr, $searchInt));
16. echo '
17.
?>
Задача «Cтранный массив»*:
Создайте массив вида [1, [2], [[3]], [[[4]]] ], вместо 4 может быть любое целое
значение. К примеру, если 5 – тогда будет массив [1, [2], [[3]], [[[4]]], [[[[5]]]] ].
1.
2. function getMultiArray($level) {
3. $result = $level;
4. for ($i = 1; $i < $level; $i++) {
5. $result = [$result];
6. }
7. return $result;
8. }
9.
10. function strange($value) {
11. $result = [];
12. for ($i = 1; $i <= $value; $i++) {
13. $result[$i] = getMultiArray($i);
14. }
15. return $result;
16.
}
17.
18. print_r(strange(5));
19.
?>
Задача Хитрое слияние массивов*
1: Напишите функцию, которая будет сливать два массива таким образом: из, к
примеру, [1, 2, 3] и ['a', 'b', 'c'] она сделает [1, 'a', 2, 'b', 3, 'c'].
2: Сделайте аналогичную функцию, которая параметрами будет принимать
не два массива, а произвольное количество (пусть функция параметром принимает
двухмерный массив, где его подмассивы – это то, что мы будем сливать).
1)
2) function array_strange_merge(…$arrays) {
3) $maxLength = 0;
4) foreach ($arrays as $array) {
5) $maxLength = max(count($array), $maxLength);
6) }
7) $result = [];
8) for ($i = 0; $i < $maxLength; $i++) {
9) foreach ($arrays as $array) {
10) if (isset($array[$i])) {
11) $result[] = $array[$i];
12) }
13) };
14) }
15) return $result;
16)
}
17)
18) print_r(array_strange_merge([1,2,3], ['a','b','c','d']));
19)
?>
Дан массив вида [1, ' , 2, ' , ' , 3] – то есть в нем есть пустые строки. Удалите все
такие элементы из этого массива.*
1.
2. $unCleanList = [1, ' , 2, ' , ' , 3];
3. $filteredList = array_filter($unCleanList);
4. var_dump($filteredList);
5. array(3) {
6. [0]=>
7. int(1)
8. [2]=>
9. int(2)
10.
[5]=>
11.
int(3)
12.
}
13.
?>
Напишите функцию, которая корректно будет складывать часы и минуты.
Примеры: на вход функции подается такое – 1ч20мин+50мин – в результатте функция
выведет 2ч10мин.*** (Задача решается разными способами, приведите пример
одного из них)
1.
2. function h2s($h) {
3. $h = $h/3600 % 24;
4. $h = $h % 10 ? "0".$h : $h;
5. $h = $h == 0 ? $h = "00" : $h;
6. return $h;
7. }
8. function m2s($m) {
9. $m = $m/60 % 60;
10.
$m = $m % 10 ? "0".$m : $m;
11.
$m = $m == 0 ? $m = "00" : $m;
12.
return $m;
13.
}
14.
function s($s) {
15.
$s = $s % 60;
16.
$s = $s % 10 ? "0".$s : $s;
17.
$s = $s == 0 ? $s = "00" : $s;
18.
return $s;
19.
}
20.
function normal2seconds($normal) {
21.
$hms = explode(":",$normal);
22.
$h = $hms[0]*3600;
23.
$m = $hms[1]*60;
24.
$s = $hms[2];
25.
return $h+$m+$s;
26.
}
27.
function seconds2normal($seconds) {
28.
$v = max($seconds,0);
29.
$h = h2s($v);
30.
$m = m2s($v);
31.
$s = s($s);
32.
return " $h:$m:$s";
33.
}
34.
function timePlus() {
35.
$times = func_get_args();
36.
for ($i=0;$i 37. $nowtime = explode(":",$times[$i]); 38. $time += normal2seconds(" $nowtime[0]:$nowtime[1]:$nowtime[2]"); 39. } 40. return seconds2normal($time); 41. } 42. echo timePlus("01:20:00","00:50:00"); 43. ?> 2.2 Ассоциативные массивы Создайте массив заработных плат $arr. Выведите на экран зарплату Коли. Решение: чтобы вывести зарплату Коли следует вывести значение элемента массива с ключом 'Коля' . Сделаем это: 1. 2. $arr = ['Коля'=>'1000$', 'Вася'=>'500$', 'Петя'=>'200$']; 3. echo $arr['Коля']; //выведет 1000$ 4. ?> Создайте массив $arr с элементами 1, 2, 3, 4, 5 двумя различными способами. Первый способ создать массив – объявить его через []: 1. 2. $arr = [1, 2, 3, 4, 5]; 3. ?> Второй способ создания массива – это поступить таким образом: 1. 2. $arr[] = 1; 3. $arr[] = 2; 4. $arr[] = 3; 5. $arr[] = 4; 6. $arr[] = 5; 7. ?> Создайте массив $arr. a =>1, b=>2, c=>3. Выведите на экран элемент с ключом 'b' . 1. 2. $arr = ['a'=>1, 'b'=>2, 'c'=>3]; 3. echo $arr['b']; 4. ?> Создайте массив $arr. Найдите сумму элементов этого массива. $arr = ['a' => 1, 'b' => 2, 'c' => 3]; : 1. 2. $arr = ['a'=>1, 'b'=>2, 'c'=>3]; 3. echo $arr['a'] + $arr['b'] + $arr['c']; 4. ?> 5. Создайте ассоциативный массив дней недели. Ключами в нем должны служить номера дней от начала недели (понедельник – должен иметь ключ 1, вторник – 2 и т.д.). Выведите на экран текущийдень недели.( например сегодня – четверг) Решение: пусть текущий день – четверг, тогда: