Задача №10.

Задайте случайным образом массив из N элементов (целых чисел). Найдите максимальное число и напечатайте его.
Задача находится здесь.

<?php
function rand_array($chislo)
{
    for($i = 0; $i < $chislo; $i++) {
       $mas[$i] = rand(120, 10);
    }
    return $mas;
}

function max_number_from_array($mas)
{
$max = $mas[0];//запоминаем 1ый элемент массива.
    
    for($i = 1; $i < count($mas); $i++) {
        //сравниваем 1ый элемент с текущим.
        if($mas[$i] > $max) {
          $max = $mas[$i];//запоминаем новый для максимального, если текущий больше.
        }
    }
    
    echo "Максимальный элемент массива = [", $max, "]";
}

$arr = [];
$n = 10;
max_number_from_array(rand_array($n));
?>

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

Нормально. Работает.

Но я всё же не советовал бы отрицать цикл foreach, и использовать всегда целочисленные индексы.
Например, скрипт

<?php
function rand_array($chislo)
{
    for($i = 0; $i < $chislo; $i++) {
       $mas[$i] = rand(120, 10);
    }
    return $mas;
}
 
function max_number_from_array($mas)
{
    $max = $mas[0];//запоминаем 1ый элемент массива.
     
    for($i = 1; $i < count($mas); $i++) {
        //сравниваем 1ый элемент с текущим.
        if($mas[$i] > $max) {
          $max = $mas[$i];//запоминаем новый для максимального, если текущий больше.
        }
    }
     
    echo "Максимальный элемент массива = [", $max, "]\n";
}
 
$arr = [1 => 14, 2 => 15, 3 => 17];
print_r($arr);
echo "\n";
max_number_from_array($arr);

выдаст

Array
(
    [1] => 14
    [2] => 15
    [3] => 17
)

PHP Notice:  Undefined offset: 0 in /home/vic/php/task_10.php on line 12
Максимальный элемент массива = [15]

Скрипт выполнился с замечанием и выдал неверный результат.
Получается, что функция max_number_from_array работоспособна
для непустых массивов, построенных функцией rand_array,
и неработоспособна для массивов более общего вида, например для

$arr = [1 => 14, 2 => 15, 3 => 17];

И можно избежать это:

<?php
function rand_array($chislo)
{
    for($i = 0; $i < $chislo; $i++) {
       $mas[$i] = rand(120, 10);
    }
    return $mas;
}
 
function max_number_from_array($array)
{
    $max = array_shift($array); //запоминаем 1ый элемент массива
     
    foreach($array as $value) {
        if ($value > $max) { //сравниваем 1ый элемент с текущим.
            $max = $value; //запоминаем текущий элемент в качестве максимального, если он больше.
        }
    }
     
    echo "Максимальный элемент массива = [", $max, "]\n";
}
 
$arr = [1 => 14, 2 => 15, 3 => 17];
print_r($arr);
echo "\n";
max_number_from_array($arr);

$n = 10;
max_number_from_array(rand_array($n));
?>

Вывод этого скрипта

Array
(
    [1] => 14
    [2] => 15
    [3] => 17
)

Максимальный элемент массива = [17]
Максимальный элемент массива = [97]

sid's picture

Спасибо теперь ясно с foreach.