«Единственный способ творить великие дела – это любить то, что ты делаешь»
PHP


Функции в PHP - Задачи с функциями

Функции - Задачи

Задача №1
Функция принимает массив, содержащий информацию о купленных товарах.
Каждый товар описывается тремя характеристиками: название товара, цена, количество.
Таким образом функция принимает многомерный массив.

Функция должна выдать общую сумму покупок и общее количество товара.

Задача №2
Написать функцию, которая принимает массив, удаляет из него элементы меньше нуля и возвращает этот массив.

PHP-код

// Задача №1
	// п.1 Массив продуктов	
	$arProducts = [
		["name"=>"Телевизор", "price"=>400, "quantity"=>1],
		["name"=>"Телефон", "price"=>300, "quantity"=>3],
		["name"=>"Кроссовки", "price"=>150, "quantity"=>2]
	];
	
	// п.3 Вызываем функцию и результат ее работы (массив) -> заносим в другой массив
	$arBasket = getBasket($arProducts);
	
	// п.4 Выводим информацию на экран
	echo "Задача №1<br>";
	echo "Общая сумма покупок: ".$arBasket["sumPrice"]."<br> Общее количество товара: ".$arBasket["sumQuantity"];
	
	// п.2 Функция с одним параметром
	// Она принимает исходный массив и возвращает массив с нужными данными
	function getBasket($arProd){
		$sumPrice = $sumQuantity = 0;
		$arReturn = [];
		for($i=0; $i<count($arProd); $i++) {
			$sumPrice += $arProd[$i]["price"]*$arProd[$i]["quantity"];
			$sumQuantity += $arProd[$i]["quantity"];
		}
		$arReturn["sumPrice"] = $sumPrice;
		$arReturn["sumQuantity"] = $sumQuantity;
		return $arReturn;
	} 
	
	
// Задача №2
	// п.1 - Исходный массив
	$arNumbers = [2, -10, -2, 4, 5, 20, 0, 1.6, -95, 1];
	echo "<p>";
	
	// п.2 - Массив, в который будет передаваться результат работы функции
	$newArNumbers =[];
	
	// п.4 - Заносим в $newArNumbers результат работы функции
	$newArNumbers = deleteLessZero($arNumbers);
	echo "Задача №2<br>";
	print_r($newArNumbers);
	
	// п.3 - Функция - возвращает массив из чисел больше 0
	function deleteLessZero($arNumb){
		$moreZero = [];
		// Для метода foreach указано что мы работаем именно с массивом (array)
		// Без этого код тоже работает, но выдает ошибку - Invalid argument supplied for foreach() 
		foreach((array)$arNumb as $key=>$value){
			if ($value >= 0){
				$moreZero[] = $value;
			}
		}
		return $moreZero;		
	}

Результат

Задача №1
Общая сумма покупок: 1600
Общее количество товара: 6

Задача №2
Array ( [0] => 2 [1] => 4 [2] => 5 [3] => 20 [4] => 0 [5] => 1.6 [6] => 1 )