Задачи для развития php

Функции PHP | упражнения с решением

Напишите функцию, которая принимает два аргумента, выполняет вычисление с их использованием, а затем возвращает предложение с результатом в браузер. Функция вычислит площадь прямоугольника с двумя аргументами — шириной и высотой. (Напоминание: площадь = ширина * высота.) Возвращаемое предложение: «Прямоугольник длиной $l и шириной $w имеет площадь $area». , где $l и $w — аргументы, а $area — результат.

2. Вывести возвращаемое функцией значение

Перепишите сценарий предыдущего упражнения, чтобы получить возвращаемое значение, площадь прямоугольника с длиной и шириной, указанными в аргументах. Переместите оператор echo из функции за её пределы. Вызовите функцию внутри вывода, чтобы указать значение площади. (Вывод в браузер должен быть идентичен выводу для предыдущего упражнения.)

3. Вычислить факториал положительного числа

Напишите функцию для вычисления факториала числа (неотрицательного целого числа). Функция принимает число в качестве аргумента.

Читайте также:  Setting Font Size

Пример вывода для n = 5:
120

4. Проверьте, является ли число простым или нет

Напишите функцию, чтобы проверять, является ли число простым или нет.

Примечание: Простое число — это натуральное число больше 1, которое не имеет положительных делителей, кроме 1 и самого себя.

5. Перевернуть строку

Напишите функцию для переворота строки.

6. Выполните сортировку массива

Напишите функцию для сортировки массива.

7. Проверьте, все ли буквы в строке строчные

Напишите функцию PHP, которая проверяет, все ли буквы в строке в нижнем регистре.

8. Проверьте, является ли переданная строка палиндромом

Напишите функцию PHP, которая проверяет, является ли переданная строка палиндромом?

Палиндром — число, буквосочетание, слово или текст, одинаково читающееся в обоих направлениях. Например, число 101; слово «топот».

9. Вывести значения, введенные пользователем

Создайте пользовательскую форму с сообщением «Введите значения длины и ширины прямоугольника». Создайте два текстовых поля, одно для ввода длины и одно для ввода ширины. Напишите функцию для обработки значений, введенных пользователем, верните пользователю результат: «Прямоугольник длиной $l и шириной $w имеет площадь $area», где $l и $w — аргументы, а $area — результат.

10. Вывести количество дней в выбранном пользователем месяце

Сначала создайте массив с именем $months. Используйте названия месяцев в качестве ключей и количество дней в каждом месяце в качестве значений. Для февраля используйте следующее значение: «28 дней, если в високосном году 29».

Затем напишите функцию для создания элемента option для поля выбора месяца из формы. Преобразуйте первый символ названия месяца в верхний регистр.

Создайте для пользователя форму с запросом «Выберите месяц». Затем создайте поле выбора с месяцами в качестве параметров, перебирая созданный массив и используя функцию для создания элементов параметров.

Когда пользователь нажимает кнопку Выполнить, выведите уведомление «Месяц $month имеет $number дней», где $month — это название месяца, выбранного пользователем, а $number — количество дней. Предусмотрите свой вывод за февраль.

11. Вывести метеоусловия выбранные пользователем

Напишите функцию для создания флажков формы из предоставленных аргументов. Эта функция должна иметь возможность принимать переменное количество аргументов, чтобы вы могли создавать в ней любое количество флажков. Убедитесь, что первый символ значений для чекбоксов написан в верхнем регистре.

Создайте для пользователя форму с запросом «Пожалуйста, введите вашу информацию». Затем создайте три текстовых поля ввода, для ввода пользователем города, месяца и года.

Создайте массив с перечнем погодных условий ckBox(‘солнце’, ‘облака’, ‘дождь’, ‘град’, ‘мокрый снег’, ‘снег’, ‘ветер’, ‘холод’, ‘тепло’).

    погодные условия, отмеченные пользователем в чекбоксах.

12. Вывести метеоусловия введенные пользователем в текстовое поле

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

Добавьте в форму запрос: «Что-нибудь еще? Перечислите дополнительные погодные условия в поле ниже, разделив их запятыми». Ниже поставьте текстовое поле размером 60. (Дайте пользователю достаточно места).

Теперь напишите функцию под названием «listIt» для создания элементов для неупорядоченного списка. Ваша функция должна принимать в качестве аргумента строку с разделителями-запятыми или массив строк. В ответе пользователю используйте функцию listIt для ответа пользователя из флажков и из текстового поля.

13. Функция, вызывающая другую функцию

Для этого упражнения PHP возьмите свой скрипт из упражнения о месяцах. Перепишите функцию «option» и назовите её «makeOptions», чтобы она включала в себя всю работу по созданию опции. Она должна будет принять массив в качестве аргумента и перебрать значения ключей массива, чтобы получить параметры.

Напишите вторую функцию «makeSelect» для создания всего поля выбора. Эта функция должна вызывать функцию «makeOptions» для создания параметров. Предусмотрите в функции проверку ошибок, чтобы убедиться, что переменная, используемая для параметров, на самом деле является массивом.

Комментарии

  • Приветствуются комментарии, соответствующие теме урока: вопросы, ответы, предложения.
  • Одну строчку кода оборачивайте в тег , несколько строчек кода — в теги
    . ваш код.

    .

  • Допускаются ссылки на онлайн-песочницы (codepen, plnkr, JSBin и др.).

Источник

Сборник практических задач PHP для подготовки к собеседованию

Хотел бы поделиться небольшим сборником практических задач, которые могут встречаться на собеседовании.

На просторах хабра и сети имеется множество сборников вопросов для подготовки к устной части собеседования, а вот сборника практических задач, который было бы удобно использовать для подготовки — не нашлось.

Для старта достаточно клонировать сборник себе и начать описывать реализацию, все оставльное уже есть. Есть готовые входящие данные для задач, есть FB класс, который позволяет уйти от var_dump() или print_r(). Все есть, поставил и сразу можно выполнять задачи — без лишней суеты. Надеюсь, кому-нибудь это окажется нужным.

Как пользоваться?
Для удобства, задачи представилены несколькими интерфейсами папка на Github. Возьмем интерфейс ITestSortInterface (/src/Training) в качестве иллюстрации. Из названия видно, что в нем лежат задачи по сортировке:

array('price'=>10,'count'=>2), * '2'=>array('price'=>5,'count'=>5), * '3'=>array('price'=>8,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * '5'=>array('price'=>8,'count'=>4), * ) * На выходе отсортированный массив * по 'price' DESC и во вторую очередь по 'count' DESC * array( * '2'=>array('price'=>5,'count'=>2), * '5'=>array('price'=>8,'count'=>4), * '3'=>array('price'=>8,'count'=>5), * '1'=>array('price'=>10,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * ) * */ public function testSort2($array); /** * Отсортировать числа на диагонали квадратной матрицы * На входе квадратная матрица * array( * array(10,5,3,6), * array(8,2,11,13), * array(9,25,30,18), * array(34,37,38,24) * ) * * На выходе должен быть массив * array( * array(2,5,3,6), * array(8,10,11,13), * array(9,25,24,18), * array(34,37,38,30) * ) * */ public function testSort3($array); > 

Для начала выполнения заданий необходимо создать класс имплементирующий желаемые интерфейсы. Я назвал свой класс Test:

 $array[0]) $x[] = $array[$i]; else $y[] = $array[$i]; > return array_merge($this->testSort1($y), array($array[0]), $this->testSort1($x)); > /** * Отсортировать двумерный массив пришедший из БД * * На входе array( * '1'=>array('price'=>10,'count'=>2), * '2'=>array('price'=>5,'count'=>5), * '3'=>array('price'=>8,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * '5'=>array('price'=>8,'count'=>4), * ) * На выходе отсортированный массив * по 'price' DESC и во вторую очередь по 'count' DESC * array( * '2'=>array('price'=>5,'count'=>2), * '5'=>array('price'=>8,'count'=>4), * '3'=>array('price'=>8,'count'=>5), * '1'=>array('price'=>10,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * ) * */ public function testSort2($array) < // TODO: Implement testSort2() method. >/** * Отсортировать числа на диагонали квадратной матрицы * На входе квадратная матрица * array( * array(10,5,3,6), * array(8,2,11,13), * array(9,25,30,18), * array(34,37,38,24) * ) * * На выходе должен быть массив * array( * array(2,5,3,6), * array(8,10,11,13), * array(9,25,24,18), * array(34,37,38,30) * ) * */ public function testSort3($array) < // TODO: Implement testSort3() method. >> $test = new Test(); /** * Тут подробнее. * \FireDog\FB::info() - выводит дебаг инфу в консоль сервера * Data::getData(Data::ARR_SIMPL_INT) - предоставляет готовые данные для заданий */ \FireDog\FB::info($test->testSort1(Data::getData(Data::ARR_SIMPL_INT))); 

image

Тут используются два вспомогательных класса \FireDog\FB и Training\Data. ( Позвольте небольшую ремарку: Использование FB или Data не обязательно — это вспомогательные классы для удобства. Однако, консоль браузера представляется мне более удобной альтернативой var_dump() или print_r() )
Первый выводит дебаг инфу в консоль браузера:

Для браузера потребуется установка плагина firephp. Тут плагин для Хрома.
Второй класс Data, хранит готовые данные для заданий. Для задания $test->testSort1() нам нужен массив array(2,5,3,5,6,7,8,9,25,24,18,26,27,28,29,30,31) его то мы и получаем Data::getData(Data::ARR_SIMPL_INT)

Сборник будет пополняться и его можно использовать не только для подготовки к собеседованию, но и просто для тренировки навыков программирования на PHP. Присылайте свои задачи, наиболее интересные будут опубликованы в сборнике.

P.S.
Сборник содержит, только простые задачи, которые встречаются в рамках собеседования. По этой причине некоторые задачи содержат формулировки вроде: «Отсортировать одномерный массив своими силами» Да-да, есть функция sort(), но тут важен контекст собеседования. Если Вам ставят задачу сформулированную именно так и вы на собеседовании, то вероятнее всего, такая задача преследует единственную цель, а именно оценить вашу алгоритмическую подготовку. Надеюсь, это понятно.

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Сборник PHP задач для отработки навыков решения c использованием TDD

z-ev/php.tasks

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Отработка навыков решения задач c использованием TDD

$ git clone https://github.com/evgeniizab/php.tasks.git $ cd php.tasks $ composer install $ vendor/bin/phpunit
vendor/bin/phpunit ./tests/ArrayTaskTest.php

Дан массив с элементами 'Привет, ', 'мир' и '!'. Необходимо вывести на экран фразу 'Привет, мир!'.

ан массив с числами. Запишите в новый массив только те числа, в которых есть цифра 5

1: Напишите функцию, которая будет сливать два массива таким образом: из, к примеру, [1, 2, 3] и ['a', 'b', 'c'] она сделает [1, 'a', 2, 'b', 3, 'c'].

2: Сделайте аналогичную функцию, которая параметрами будет принимать не два массива, а произвольное количество (пусть функция параметром принимает двухмерный массив, где его подмассивы – это то, что мы будем сливать).

Напишите функцию, которая корректно будет складывать часы и минуты. Примеры: на вход функции подается такое – 01:20:00 + 00:50:00. В результатте функция выведет 02:10:00

Дан многомерный массив $arr. Напишите функцию, которая принимает строки вида 'строка1.строка2.строка3' – буквы разделенные точками, а возвращает элемент многомерного массива $arr['строка1']['строка2']['строка3']. Количество точек в строке может быть любым, вложенность массива тоже любая, ключи массива не содержат точек.

About

Сборник PHP задач для отработки навыков решения c использованием TDD

Источник

Оцените статью