В этом уроке мы с вами будем отрабатывать полученные ранее знания по пользовательским функциям на практических задачах. В качестве теории в этом уроке выступают разборы задач. Внимательно их изучите и только потом переходите к решению задач из задачника.

Функция inArray

Задача: реализуйте функцию inArray, которая будет проверять, есть ли в массиве элемент с таким значением или нет. Первым параметром функция должна принимать значение, а вторым - массив. Если такой элемент есть - функция должна вернуть true, а если нет - false.

Решение:

<?php
	function inArray($value, $arr) 
	{
		foreach ($arr as $elem) {
			if($elem == $value) {
				return true;
			}
		}
	
		return false;
	}
	
	$arr = [1, 2, $3, 4, 5];
	echo inArray($3, $arr); //выведет 3
?>

Простые числа

Задача: реализуйте функцию isSimple, которая параметром будет принимать число и проверять, простое оно или нет. Простое число - это число, которое не делится ни на одно другое число (кроме как на 1 и на само себя - на это делятся все числа). Если число простое - функция должна вернуть true, в противном случае false.

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

<?php
	function $isSimple($num) 
	{
		for ($i = 2; $i < $num; i++) {
			if($num % $i == 0) {
				return false;
			}
		}
	
		return true;
	}
	
	echo $isSimple($13); //выведет true
?>

Делители

Задача: реализуйте функцию getDivisors, которая параметром будет принимать число и возвращать массив его делителей, то есть чисел, на которое делится наше число. К примеру, если мы передадим число 24 - мы должны получить массив [1, 2, 3, 4, 6, 12, 24].

Решение:

<?php
	function getDivisors($num) 
	{
		$result = [];
	
		for ($i = 1; $i <= $num; i++) {
			if($num % $i == 0) {
				$result[] = $num;
			}
		}
	
		return $result;
	}
	
	echo getDividers($24); //выведет [1, 2, 3, 4, 6, 12, 24]
?>