Учебные задачи PHP. Задача 13

Создайте функцию, которая принимает на вход массив случайных чисел из диапазона [5..12]. Обходит этот массив и делает для каждого элемента следующее (пусть она оказывает побочный эффект прямо в своём теле):
Если это число равно 5 -- то выведете на экран строку "пять", если 6 -- то строку "шесть", если 7 то число "7", иначе -- строку "какое-то другое число".
Используйте для решения задачи оператор switch

<pre><?php
function outputValue($arr)
{
	for ($i = 0; $i < 10; $i ++) {
		switch ($arr[$i]) {   
			case ($arr[$i] == 5):      
				echo "В итерации [$i] => пять <br>"; // если в текущей итерации $i = 5, то выйдет сообщение "В итерации [№ итерации] => пять"
				break;
			case ($arr[$i] == 6):
				echo "В итерации [$i] => шесть <br>";
				break;
			case ($arr[$i] == 7):
				echo "В итерации [$i] => семь <br>";
				break;
			default:
    			echo "В итерации [$i] какое-то другое число <br>";
		}
	}
}

for ($i = 0; $i < 10; $i ++) {  // циклом задаем массив
	$arr[] = rand(5, 12);		// случайными числами в диапазоне [5..12]
}
print_r ($arr); // для наглядности проверки кода
outputValue($arr);
?>

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

for ($i = 0; $i < 10; $i ++)

аналогично предыдущему замечанию - такой код обойдет массив только из 10 элементов. Используйте foreach для обхода массивов.

_____________
матфак вгу и остальная классика =)

melisa's picture

будьте внимательнее к условию)

case ($arr[$i] == 7):
    echo "В итерации [$i] => семь <br>";

<pre><?php
function outputValue($arr)
{
    foreach ($arr as $i) {
        switch ($i) {   
            case ($i == 5):      
                echo "В итерации [$i] => пять <br>"; // если в текущей итерации $i = 5, то выйдет сообщение "В итерации [№ итерации] => пять"
                break;
            case ($i == 6):
                echo "В итерации [$i] => шесть <br>";
                break;
            case ($i == 7):
                echo "В итерации [$i] => '7' <br>";
                break;
            default:
                echo "В итерации [$i] какое-то другое число <br>";
        }
    }
}

function generationArray($number) // функция создание массива случайных чисел
{	
	for ($i = 0; $i < $number; $i ++) { // циклом задаем массив
    	$arr[] = rand(5, 12);		// случайными числами в диапазоне [5..12]
	}
	print_r($arr); // для наглядности проверки кода
	return $arr;
}

$number = 10; // количество элементов массива
$arr = generationArray($number); // вызов ф-ии создания массива
outputValue($arr);		// запуск функции решения задачи
?>

Оказывается, условие оператора "case" можно записывать попроще:

<pre><?php
function outputValue($arr)
{
    foreach ($arr as $i) {
        switch ($i) {   
            case 5:      
                echo "В итерации [$i] => пять <br>"; // если в текущей итерации $i = 5, то выйдет сообщение "В итерации [№ итерации] => пять"
                break;
            case 6:
                echo "В итерации [$i] => шесть <br>";
                break;
            case 7:
                echo "В итерации [$i] => '7' <br>";
                break;
            default:
                echo "В итерации [$i] какое-то другое число <br>";
        }
    }
}
 
function generationArray($number) // функция создание массива случайных чисел
{   
    for ($i = 0; $i < $number; $i ++) { // циклом задаем массив
        $arr[] = rand(5, 12);       // случайными числами в диапазоне [5..12]
    }
    print_r($arr); // для наглядности проверки кода
    return $arr;
}
 
$number = 10; // количество элементов массива
$arr = generationArray($number); // вызов ф-ии создания массива
outputValue($arr);      // запуск функции решения задачи
?>
melisa's picture

  1. "В итерации [$i] => пять <br>"

    В данном случае $i является не счётчиком итераций, а значением массива, поэтому вывод "в итерации $i ..." неверен.

  2. echo "В итерации [$i] => '7' <br>";

    Число (integer) в php выводится без кавычек, а строка (string) в кавычках. Если очередной элемент массива равен 7, выведите именно число.

<pre><?php
function outputValue($arr)
{
    foreach ($arr as $i) {
        switch ($i) {   
            case 5:      
                echo "Значение массива: $i => пять <br>"; // если в текущей итерации $i = 5, то выйдет сообщение "Значение массива: 5 => пять"
                break;
            case 6:
                echo "Значение массива: $i => шесть <br>";
                break;
            case 7:
                echo "Значение массива: $i => ", 7, "<br>";
                break;
            default:
                echo "Значение массива: $i => какое-то другое число <br>";
        }
    }
}
  
function generateArray($number) // функция создание массива случайных чисел
{   
    for ($i = 0; $i < $number; $i ++) { // циклом задаем массив
        $arr[] = rand(5, 12);       // случайными числами в диапазоне [5..12]
    }
    print_r($arr); // для наглядности проверки кода
    return $arr;
}
  
$number = 10; // количество элементов массива
$arr = generateArray($number); // вызов ф-ии создания массива
outputValue($arr);      // запуск функции решения задачи
?>
melisa's picture

принято