Примеры решения задач

Задача

Задача. Дан массив с числами. Создайте из него новый массив, где останутся лежать только положительные числа. Создайте для этого вспомогательную функцию 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 до 2017, сумма цифр которых равна 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));
	}
?>