Примеры решения задач
Задача
Задача. Дан массив с числами. Создайте из него новый массив, где останутся лежать только положительные числа. Создайте для этого вспомогательную функцию isPositive, которая параметром будет принимать число и возвращать true, если число положительное, и false - если отрицательное.
Решение:
<?php
$arr = [1, 2, 3, -1, -2, -3];
function isPositive($num)
{
if ($num >= 0) {
return true;
} else {
return false;
}
}
$newArr = [];
foreach ($arr as $elem) {
if (isPositive($elem)) {
$newArr[] = $elem;
}
}
var_dump($newArr);
?>
Задачи для решения
Сделайте функцию isNumberInRange, которая параметром принимает число и проверяет, что оно больше нуля и меньше 10. Если это так - пусть функция возвращает true, если не так - false.
Решение:
Первый вариант:
<?php
function isNumberInRange($num)
{
if ($num > 0 and $num < 10) {
return true;
} else {
return false;
}
}
?>
Второй вариант - сокращенный:
<?php
function isNumberInRange($num)
{
return $num > 0 and $num < 10;
}
?>
Дан массив с числами. Запишите в новый массив только те числа, которые больше нуля и меньше 10-ти. Для этого используйте вспомогательную функцию isNumberInRange из предыдущей задачи.
Решение:
<?php
$arr = [1, 3, 5, 6, 9, 11, 15, 30];
$newArr = [];
foreach ($arr as $elem) {
if (isNumberInRange($elem)) {
$newArr[] = $elem;
}
}
var_dump($newArr);
?>
Сделайте функцию getDigitsSum (digit - это цифра), которая параметром принимает целое число и возвращает сумму его цифр.
Решение:
<?php
function getDigitsSum($num)
{
return array_sum((str_split($num, 1)));
}
echo getDigitsSum(123); //выведет 6
?>
Найдите все года от 1 до 2019, сумма цифр которых равна 13. Для этого используйте вспомогательную функцию getDigitsSum из предыдущей задачи.
Решение:
<?php
$year = date('Y');
$arr = [];
for ($i = 1; $i < $year; $i++) {
if(getDigitsSum($i) == 13) {
$arr[] = $i;
}
}
var_dump($arr);
?>
Сделайте функцию isEven() (even - это четный), которая параметром принимает целое число и проверяет: четное оно или нет. Если четное - пусть функция возвращает true, если нечетное - false.
Решение:
Первый вариант:
<?php
function isEven($num)
{
if ($num % 2 == 0) {
return true;
} else {
return false;
}
}
?>
Второй вариант - сокращенный:
<?php
function isEven($num)
{
return $num % 2 == 0;
}
?>
Дан массив с целыми числами. Создайте из него новый массив, где останутся лежать только четные из этих чисел. Для этого используйте вспомогательную функцию isEven из предыдущей задачи.
Решение:
<?php
$arr = [1, 3, 5, 6, 9, 11, 15, 30];
$newArr = [];
foreach ($arr as $elem) {
if (isEven($elem)) {
$newArr[] = $elem);
}
}
?>
Сделайте функцию getDivisors, которая параметром принимает число и возвращает массив его делителей (чисел, на которое делится данное число).
Решение:
<?php
function getDivisors($num)
{
$arr = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$arr[] = $i;
}
}
return $arr;
}
?>
Сделайте функцию getCommonDivisors, которая параметром принимает 2 числа, а возвращает массив их общих делителей. Для этого используйте вспомогательную функцию getDivisors из предыдущей задачи.
Решение:
<?php
function getCommonDivisors($num1, $num2) {
return array_intersect(getDivisors($num1), getDivisors($num2));
}
?>