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

Решение для задачи из списка

<?php 
/**
 * Решение для задачи №8 из курса PHP
 * 
 * Задать двумерный массив размерностью m на n (MxN) элементов (m и n вынести в область определения констант), 
 * заполнить его случайными значениями и вывести их на экран уже после того, как весь массив будет заполнен 
 * (т.е. заполнять и выводить в разных группах циклов).
 */
 define("M",10);//Определяем константу первого уровня размерности
 define("N",3);//Определяем константу второго уровня размерности

 showArray(getTwoDimArray());

 function getTwoDimArray() { //Размерность получаем из констант, поэтому передавать её в параметрах не обязательно
    $array = [];
    $index = 0;
    while($index != M){
        $array[$index] = [];
        for ($i=0; $i < N; $i++) { 
            $array[$index][$i] = rand();
        }
        $index++;
    }
    return $array;
 }

 function showArray($array) {
    foreach ($array as $key => $element) {
        if(is_array($element)) {
            showArray($element);// Если элемент оказался массивом - рекурсия
            echo"<br>";
        } elseif($key != 0) { // Можно было тупо вывести через перенос строки
            echo " » ".$element; // Но мне показалось что типографская кавычка смотрится лучше
        } else echo $element;

    }
 }
?>
vedro-compota's picture

1)

while($index != M){
        $array[$index] = [];
        for ($i=0; $i < N; $i++) 

Если одна назначение - используйте одинаковые циклы, это улучшит читаемость.

2) Хорошо что вы знаете про рекурсивный вызов, но если задача простая усложнять код рекурсией не стоит (в реальных проектах).

3) Форматирование не совсем по нашим стандартам.

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