Задача №8 - Задать двумерный массив размерностью m на n

Задачи из этого этого списка


 Думаю что заполнение массива не совсем правильное.
 Но все же проверьте и напишите комментарии пожалуйста.
 Нужна ваша помощь:
 как сделать двумерный массив заполненный разными числами
 как в направлении N так и в направлении M?

<?php
/* Задать двумерный массив размерностью m на n (MxN) элементов (m и n вынести в область определения констант),
заполнить его случайными значениями и вывести их на экран уже после того,
 как весь массив будет заполнен (т.е. заполнять и выводить в разных группах циклов).*/

$N = 6;
$M = 5;

$array = new SplFixedArray($N);

for ( $i = 0; $i < count($array); $i++ ) {
    $array[$i] = $array1 = new SplFixedArray($M);
}
   
for ($j = 0; $j < count($array1); $j++) {
        $value = rand( 11, 21 );
        $array1[$j] = $value;
}

$out  = "";
$out .= "<table>";
foreach($array as $key => $element){
    $out .= "<tr>";
    foreach($array1 as $subkey => $subelement){
        $out .= "<td>$subelement</td>";
    }
    $out .= "</tr>";
}
$out .= "</table>";

echo $out;
?>

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

melisa's picture

Замечание относительно оформления задачи на сайте.

Думаю что заполнение массива не совсем правильное.
 Но все же проверьте и напишите комментарии пожалуйста.
 Нужна ваша помощь:
 как сделать двумерный массив заполненный разными числами
 как в направлении N так и в направлении M?

Текст может быть внутри кода, только если он относится непосредственно к какой-то строке, тогда нужно его оформлять, как комментарий:

// комментарий к строке ниже
$someVariable = 'anyValue';

Вынесите его из подсвечиваемых строк.

vedro-compota's picture

комментарий может быть и многострочным о относится вообще ко всему файла, но оформить как комментарий надо, согласен:

/*
ваш
комментарий
*/

или можно было просто написать это замечание до кода

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

melisa's picture

  1. Насчёт заполнения массива:
    • попробуйте, взять идею у себя из циклов, в которых вы выводите массив на экран.
    • не используйте SplFixedArray, это вас только запутывает. достаточно ограничения числа элементов количеством витков цикла.
  2. $N = 6;
    $M = 5;

    В задаче требуется определить M и N как константы

  3. $out .= "<table>";

    это лишнее, ставьте пробел между значениями "одного уровня", а для смены строки используйте

  4. Используйте сокращённый синтаксис foreach:
    foreach($array1 as $subkey => $subelement) {}

    если вы не используете значение ключа, можно написать

    foreach($array1 as $subelement) {}
Pavel1989's picture

<?php
/* Задать двумерный массив размерностью m на n (MxN) элементов (m и n вынести в область определения констант),
заполнить его случайными значениями и вывести их на экран уже после того,
 как весь массив будет заполнен (т.е. заполнять и выводить в разных группах циклов).*/

// Определение констант

define("N",6);
define("M",5);
$array = [];

// Заполнение двумерного массива случайными числами

for ( $i = 0; $i < N; $i++ ) {
    for ($j = 0; $j < M; $j++) {
        $array[$i][$j] = rand( 50, 99 );        
    }
}

// Вывод двумерного массива на экран

echo "<table>";
foreach ($array as $result){
        echo "<tr>";
        foreach ($result as $rValue){
                echo "<td>{$rValue}</td>";
        }
        echo "</tr>";
}
echo "</table>";

?>
melisa's picture

  1. // Заполнение двумерного массива случайными числами
    for ( $i = 0; $i < N; $i++ ) {
        for ($j = 0; $j < M; $j++) {
            $array[$i][$j] = rand( 50, 99 );        
        }
    }

    идеально :')

  2. echo "<table>";
    // ...
    echo "</table>";

    оригинальный подход. хорошей практикой в программировании считается разделение (в разные файлы) логики приложения и формирования внешнего вида в браузере (об этом т.н. MVC - концепция), поэтому в будущем с тегами внутри кода вы вряд ли столкнётесь. но это уже совсем другая история.

принято