Задачи по php

Задачник по PHP (с решениями)

Роман Игоревич Григорьев

    1)
Вычисления и условный оператор в PHP
    1.1 Простейшая арифметика
    Даны два числа 5 и 7. Найти их сумму и произведение.
1. <?php
    2. $a = 5;
    3. $b = 7;
    4. $c = $a + $b;
    5. $d = $a*$b;
    6. echo $c, $d;
7. ?>
    Даны два числа 4 и 6. Найдите сумму их квадратов.
1. <?php
    2. $a = 4;
    3. $b = 6;
    4. $c = $a*$a + $b*$b;
    5. echo $c;
6. ?>
    Даны три числа 3, 5, 8. Найдите их среднее арифметическое.
1. <?php
    2. $a = 3;
    3. $b = 5;
    4. $c = 8;
    5. $d = ($a + $b + $c)/3
    6. echo $d;
7. ?>
    Даны три числа x = 2,y = 6 и z = 9. Найдите (x+1)4?2(z?2x^2+y^2)
1. <?php
    2. $x = 2;
    3. $y = 6;
    4. $z = 9;
    5. $a = ($x+1)*4 – 2 ($z – 2*$x*$x+$y*$y);
    6. echo $a
7. ?>
    Даны три ненулевых числа $a = 4, $b = 8, $c = 3. Найдите всевозможные
    результаты деления суммы двух из них на оставшееся третье число.
1. <?php
    2. $a = 4;
    3. $b = 8;
    4. $c = 3;
    5. $d = ($a +$b)/$c;
    6. $r = ($b+$c)/$a;
    7. $f = ($a + $c)/$b;
    8. echo $d,$r,$f;
9. ?>
    Дано два числа 17 и 54. Найдите сумму 40% от первого числа и 84% от
    второго числа.
1. <?php
    2. $a = 17;
    3. $b = 54;
    4. $c = 0,4*17 + 0,84*54;
    5. echo $c;
6. ?>
    Дано трехзначное числа. Найдите сумму его цифр.
1. <?php
    2. $var = 578; // Объявляем число
    3. $var .= ‘ ; // Приводим его к строковому типу
    4. echo $a = $var[2] + $var[1] + $var[0]; // Выводим переменную
    5. //равную сумме цифр числа
6. ?>
1.2. Условный оператор
    Дано число 15. Если оно больше 10, то увеличьте его на 100, иначе уменьшите
    на 30.
1. <?php
    2. $a = 15;
    3. if ($a>10)
    4. {$a = $a + 100};
    5. else
    6. {$a = $a – 30};
    7. echo $a
8. ?>
    Дано натуральное число 8. Если оно четное, то уменьшите его в 2 раза, иначе
    увеличьте в 3 раза.
1. <?php
    2. if ($number / 2 == ceil($number / 2))
    3. {
    4. $number = $number / 2;
    5. }
    6. else
    7. {
    8. $number = $number *3;
    9. }
    10.
    echo $number;
11.
?>
    Дано число. Если оно не меньше 50, то выведите квадрат этого числа, если же
    это число больше 10 и меньше 30, то выведите ноль, в остальных случаях выведите
    слово «Ошибка»
1. <?php
    2. $a = ee; // Задаем число $a, например, 45
    3. if ($a > 50) {
    4. echo $b=pow($a,2);
    5. }
    6. elseif ($a > 10 & $a < 30) {
    7. echo 0;
    8. }
    9. else {
    10. echo «Ошибка»;
    11.
    }
12.
?>
    Дано два числа $a = 15, $b = 4. Вывести наибольшее из них.
1. <?php
    2. $a = 15;
    3. $b = 4;
    4. if ($a > $b)
    5. { echo $a};
    6. else
    7. { echo $b };
8. ?>
    Дано два числа $a = 19, $b = 143. Вывести ‘Да’, если они отличаются на 100,
    иначе вывести ‘Нет’
1. <?php
    2. $a = 19;
    3. $b = 143;
    4. if ($b – $a = 100 )
    5. { echo «No» };
    6. else
    7. { echo «Yes» };
8. ?>
    Дано два натуральных числа. Вывести ‘Да’, если они отличаются не более чем
    на 20, иначе вывести ‘Нет’.
1. <?php
    2. $a = 15;
    3. $b = 30;
    4. if ($b – $a > 20)
    5. { echo «No» };
    6. else
    7. {echo «Yes»};
8. ?>
    В данном трехзначном числе переставьте цифры так, чтобы новое число
    оказалось наибольшим из возможных.
1.3. Работа с формой
    Пользователь вводит номер дня недели. Вывести название дня недели.
    1. <?php
    2. if ($a = 1) {echo Monday};
    3. if ($a = 2) {echo Tuesday};
    4. if ($a = 3) {echo Wednesday};
    5. if ($a = 4) {echo Thursday};
    6. if ($a = 5) {echo Friday};
    7. if ($a = 6) {echo Saturday};
    8. if ($a = 7) {echo Sunday};
    9. else
    10. {echo «неверное число»}
11.
?>
    Пользователь вводит свой возраст. Если он больше 80 лет, то вывести
    ‘Здравствуйте, уважаемый’, иначе ‘Успехов!’.
1. <?php
    2. if (0 < $years <= 80) {echo Успехов};
    3. else
    4. {echo «Здравствуйте, Уважаемый»};
5. ?>
    Пользователь выбирает из выпадающего списка страну (Турция, Египет или
    Италия), вводит количество дней для отдыха и указывает, есть ли у него скидка
    (чекбокс). Вывести стоимость отдыха, которая вычисляется как произведение
    количества дней на 400. Далее это число увеличивается на 10%, если выбран Египет,
    и на 12%, если выбрана Италия. И далее это число уменьшается на 5%, если указана
    скидка.
    1. <html>
    2. <head>
    3. <meta charset=»utf-8″ />
    4. <title>Название странички</title>
    5. </head>
    6. <body>
    7.
    8.
9. <?php
    10.
    echo ‘<pre>’;
    11.
    print_r($_POST);
    12.
    echo ‘</pre>’;
    13.
    if (isset($_POST[‘hero’]))
    14.
    {
    15.
    if($_POST[‘hero’] == 1)
    16.
    {
    17.
    if(isset($_POST[‘b’]))
    18.
    {
    19.
    echo» в Италию со скидкой «. ($_POST[‘a’]*400*1.12*0.95);}
    20.
    else{echo» в Италию без скидки «. ($_POST[‘a’]*400*1.12);}
    21.
    }
    22.
    elseif( $_POST[‘hero’] == 2){
    23.
    if(isset($_POST[‘b’])){
    24.
    echo» в Грецию со скидкой». ($_POST[‘a’]*400*1.1*0.95);}
    25.
    else{echo»Греция без скидкии».($_POST[‘a’]*400*1.1);}
    26.
    }
    27.
    elseif($_POST[‘hero’] == 3){
    28.
    if(isset($_POST[‘b’])){
    29.
    echo» в Россию со скидкой». ($_POST[‘a’]*400*0.95);}
    30.
    else{echo»Poccия без скидкии».($_POST[‘a’]*400);}
    31.
    }
    32.
    }
    33.
?>
    34.
    <form method=»post»>
    35.

    36.
    <p><select name=»hero»><option>выбирайте страну из списка </option> 37.
    <option value=»1″>Италия</option>
    38.
    <option value=»2″>Греция</option>
    39.
    <option value=»3″>Россия</option>
    40.
    </select></p>
    41.
    <p><b>сколько дней отдыха?</b></p>
    42.
    <input type=»text» name=»a» />
    43.
    <p><b>есть ли у вас скидка?</b></p>
    44.
    <input type=»checkbox» name=»option» value=»b»><Br> 45.
    <p><input type=»submit» value=»Отправить»></p>
    46.
    </form>
    47.

    48.

    49.
    </body>
    50.
    </html>
2) Массивы в PHP
2.1 Массивы
    Дан массив с элементами ‘Привет, ‘, ‘мир’ и ‘!’.

Необходимо вывести на экран
    фразу ‘Привет, мир!’.
1. <?php
    2. //Выведем фразу ‘Привет, мир!’:
    3. $arr = [‘Привет, ‘, ‘мир’, ‘!’];
    4. echo $arr[0].$arr[1].$arr[2];
5. ?>
    Слово ‘Привет, ‘ хранится под номером 0, это значит, что для доступа к нему
    мы должны написать $arr[0].
    Для доступа к слову ‘мир’ мы должны написать $arr[1], а $arr[2] содержит в
    себе ‘!’. Далее с помощью оператора ‘точка’ мы сложим три наши строки (‘Привет, ‘,
    ‘мир’ и ‘!’) в одну строку таким образом: $arr[0].$arr[1].$arr[2], и выведем на экран
    с помощью echo.
Задача. Решим немного другую задачу: дан массив с элементами ‘Привет, ‘,
    ‘мир’ и ‘!’. Необходимо записать в переменную $text фразу ‘Привет, мир!’, а затем
    вывести на экран содержимое этой переменной.
1.

<?php
    2. $arr = [‘Привет, ‘, ‘мир’, ‘!’];
    3. $text = $arr[0].$arr[1].$arr[2];
4. /*
    5.
В переменной $text теперь лежит строка ‘Привет, мир!’.
    6.
Выведем ее на экран:
7. */
    8. echo $text;
9. ?>
    Дан массив [‘Привет, ‘, ‘мир’, ‘!’]. Необходимо записать в первый элемент (то
    есть элемент с номером ноль) этого массива слово ‘Пока, ‘ (то есть вместо
    слова ‘Привет, ‘ будет ‘Пока, ‘ ).
1. <?php
    2. $arr = [‘Привет, ‘, ‘мир’, ‘!’];
    3. $arr[0] = ‘Пока, ‘; //перезапишем первый элемент массива
    4. var_dump($arr); //посмотрим на массив и убедимся в том, что он изменился
5. ?>
    Дан массив с числами. Запишите в новый массив только те числа, в которых
    есть цифра 5.
1. <?php
    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 ‘<pre>’;
    15. var_dump(getFives($searchArr, $searchInt));
    16.

echo ‘</pre>’;
17.
?>
Задача «Cтранный массив»*:
    Создайте массив вида [1, [2], [[3]], [[[4]]] ], вместо 4 может быть любое целое
    значение. К примеру, если 5 – тогда будет массив [1, [2], [[3]], [[[4]]], [[[[5]]]] ].
1. <?php
    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) <?php
    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. <?php
    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. <?php
    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<count($times);$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. <?php
    2. $arr = [‘Коля’=>’1000$’, ‘Вася’=>’500$’, ‘Петя’=>’200$’];
    3. echo $arr[‘Коля’]; //выведет 1000$
4. ?>
    Создайте массив $arr с элементами 1, 2, 3, 4, 5 двумя различными способами.
    Первый способ создать массив – объявить его через []:
1. <?php
    2. $arr = [1, 2, 3, 4, 5];
3. ?>
    Второй способ создания массива – это поступить таким образом:
1. <?php
    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. <?php
    2. $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3];
    3. echo $arr[‘b’];
4. ?>
    Создайте массив $arr. Найдите сумму элементов этого массива.
    $arr = [‘a’ => 1, ‘b’ => 2, ‘c’ => 3]; :
1. <?php
    2. $arr = [‘a’=>1, ‘b’=>2, ‘c’=>3];
    3. echo $arr[‘a’] + $arr[‘b’] + $arr[‘c’];
4. ?>
    5.
    Создайте ассоциативный массив дней недели. Ключами в нем должны служить
    номера дней от начала недели (понедельник – должен иметь ключ 1, вторник – 2 и
    т.д.). Выведите на экран текущийдень недели.( например сегодня – четверг)
Решение: пусть текущий день – четверг, тогда:
1. <?php
    2. $arr = [1=>’пн’, 2=>’вт’, 3=>’ср’, 4=>’чт’, 5=>’пт’, 6=>’сб’, 7=>’вс’]; 3. echo $arr[4];
4. ?>
    Пусть теперь номер дня недели хранится в переменной $day, например там
    лежит
    число
    3.
    Выведите
    день
    недели,
    соответствующий
    значению
    переменной $day.
    1. <?php
    2. //пусть текущий день – четверг, тогда:
    3. $arr = [1=>’пн’, 2=>’вт’, 3=>’ср’, 4=>’чт’, 5=>’пт’, 6=>’сб’, 7=>’вс’]; 4. $day = 3;
    5. echo $arr[$day];
6. ?>
2.3 Многомерные массивы
    Дан многомерный массив
    1. $arr = [
    2. ‘sp’=>[‘azul’, ‘rojo’, ‘verde’],
    3. ‘en’=>[‘blue’, ‘red’, ‘green’],
    4. ];
    Выведите с его помощью слово ‘azul’ .
1. <?php
    2. $arr = [
    3. ‘sp’=>[‘azul’, ‘rojo’, ‘verde’],
    4. ‘en’=>[‘blue’, ‘red’, ‘green’],
    5. ];
    6. //так как массив многомерный
    7. //(в нашем случае двухмерный),
    8. //то придется написать несколько
    9. //квадратных скобок подряд
    10. var_dump($arr[‘sp’]);
    11. echo $arr[‘sp’][0]; //выведет ‘azul’
    12. echo $arr[‘sp’][1]; //выведет ‘rojo’
    13. echo $arr[‘en’][1]; //выведет ‘red’
14.
?>
    Создайте массив $arr=[‘a’, ‘b’, ‘c’]. Выведите значение массива на экран с
    помощью функции var_dump(). С помощью массива $arr из предыдущего номера
    выведите на экран содержимое первого, второго и третьего элементов.
1. <?php
    2. $arr = [‘a’, ‘b’, ‘c’];
    3. var_dump($arr)
    4.
    5. $arr = [‘a’, ‘b’, ‘c’];
    6. echo $arr[0].'<br>’;
    7. echo $arr[1].'<br>’;
    8. echo $arr[2].'<br>’;
9. ?>
    Создайте массив $arr=[‘a’, ‘b’, ‘c’, ‘d’] и с его помощью выведите на экран
    строку ‘a+b, c+d’ .
1. <?php
    2. $arr = [‘a’, ‘b’, ‘c’, ‘d’];
    3. echo $arr[0].’+’. $arr[1].’, ‘.$arr[2].’+’.$arr[3];
4. ?>
    Создайте массив $arr с элементами 2, 8, 5, 3. Умножьте первый элемент
    массива на второй, а третий элемент на четвертый. Результаты сложите, присвойте
    переменной $a. Выведите на экран значение этой переменной.
1. <?php
    2. $arr = [2, 8, 5, 3];
    3. $a = $arr[0] * $arr[1] + $arr[2] * $arr[3];
    4. echo $a;
5. ?>
    Заполните массив $arr числами от 1 до 5. Не объявляйте массив, а просто
    заполните его присваиванием $arr[] = новое значение.
1. <?php
    2. $arr[] = 1;
    3. $arr[] = 2;
    4. $arr[] = 3;
    5. $arr[] = 4;
    6. $arr[] = 5;
    7. var_dump($arr);
8. ?>
    Создайте многомерный массив $arr.
    1. $arr = [
    2. ‘cms’=>[‘joomla’, ‘wordpress’, ‘drupal’],
    3. ‘colors’=>[‘blue’=>’голубой’, ‘red’=>’красный’, ‘green’=>’зеленый’]
    4. ]
    С его помощью выведите на экран слова ‘joomla’, ‘drupal’, ‘verde’, ‘rojo’.
1. <?php
    2. $arr = [
    3. ‘cms’=>[‘joomla’, ‘wordpress’, ‘drupal’],
    4. ‘colors’=>[‘blue’=>’azul’, ‘red’=>’rojo’, ‘green’=>’verde’]
    5. ];
    6.
    7. echo $arr[‘cms’][0]; //joomla
    8. echo $arr[‘cms’][2] //drupal;
    9. echo $arr[‘colors’][‘green’]; //verde
    10. echo $arr[‘colors’][‘red’]; //rojo
11.
?>
    Создайте двухмерный массив. Первые два ключа – это ‘ru’ и ‘en’ . Пусть первый
    ключ содержит элемент, являющийся массивом названий дней недели по-русски, а
    второй – по-английски. Выведите с помощью этого массива понедельник по-русски и
    среду по английски (пусть понедельник – это первый день).
1. <?php
    2. $arr = [
    3. ‘ru’=>[1=>’пн’, ‘вт’, ‘ср’, ‘чт’, ‘пт’, ‘сб’, ‘вс’],
    4. ‘en’=>[1=>’mn’, ‘ts’, ‘wd’, ‘th’, ‘fr’, ‘st’, ‘sn’],
    5. ];
    6. echo $arr[‘ru’][1]; //пн
    7. echo $arr[‘en’][2]; //wd
8. ?>
    … Пусть теперь в переменной $lang хранится язык (она принимает одно из
    значений или ‘ru’, или ‘en’ – либо то, либо то), а в переменной $day – номер дня.
    Выведите словом день недели, соответствующий переменным $lang и $day. То есть: если, к примеру, $lang = ‘ru’ и $day = 3 – то выведем ‘среда’.
1. <?php
    2. $arr = [
    3. ‘ru’=>[‘пн’, ‘вт’, ‘ср’, ‘чт’, ‘пт’, ‘сб’, ‘вс’],
    4. ‘en’=>[‘mn’, ‘ts’, ‘wd’, ‘th’, ‘fr’, ‘st’, ‘sn’],
    5. ];
    6. $lang = ‘ru’;
    7. $day = 3;
    8. echo $arr[$lang][$day]; //ср
9. ?>
    Дан многомерный массив $arr. Напишите функцию, которая принимает строки
    вида ‘строка1.строка2.строка3’ – буквы разделенные точками, а возвращает элемент
    многомерного массива $arr[‘строка1’][‘строка2’][‘строка3’]. Количество точек в строке
    Конец ознакомительного фрагмента.

Задания по основам PHP

  1. Начинающие PHP-разработчики часто сталкиваются с задачами установки и настройки веб-сервера, установки PHP и его настройки. Задачи текущей заметки предназначены для закрепления первого знакомства с языком и помогут сориентироваться при изучении и сформулировать дополнительные вопросы на курсах PHP. Читать далее

  2. В этой заметке задачи по PHP охватывают вопросы PHP синтаксиса, работы операторов, объявления и использования переменных, создания констант. Примечание: рассматриваются и типы данных в PHP. Часть задач посвящена управляющим конструкциям и . Читать далее

  3. Цикл while PHP (как и for, и foreach) позволяют выполнять циклические действия, наборы операций. Особое внимание уделите циклу PHP foreach. Приведенный набор задач содержит усложнённые задания, они помечены звездочкой *. Читать далее

  4. Задачи по созданию пользовательских функций в PHP охватывают следующие вопросы: создание функций в PHP (описание функций), вызов функций, работа с аргументами функций в PHP, учёт области видимости. Читать далее

  5. В PHP есть огромное количество встроенных функций, разрабатываемых на всем протяжении развития скриптового языка. Задания охватывают строковые функции PHP, математические функции, функции работы с массивами, а также работу с операторами эмуляции вставок на стороне сервера..

    Читать далее


  6. Обработка форм в PHP неразрывно связана с пониманием протокола HTTP. Предполагается что читатель знаком (хотя бы поверхностно) с этим протоколом — это упростит решение задач. Также необходимо иметь представление о построении HTML-форм и элементов управления в эти формах, атрибутах, методах GET и POST. Читать далее

Задания по курсу PHP: HTTP-заголовки, сессии, файлы и MySQL

Задания по PHP и MySQL

.

Добавить комментарий

Закрыть меню