Sanket Wankhede Ответов: 1

Как мне это сделать используя только один цикл for Пожалуйста помогите мне


$arr= Array();
for ($a = 0; $a < 6; $a++){
    for ($b= 0; $b< 6; $b++){
        for ($c= 0; $c< 6; $c++){
            $arr[$a][$b][$c] = $a* $b* $c;
        }
    }
}


Что я уже пробовал:

how can i do this using only one loop ?

1 Ответов

Рейтинг:
0

OriginalGriff

На самом деле нет более эффективного - или ремонтопригодного - способа сделать это: вам все равно нужно "посетить" каждый из 216 элементов массива и установить его значение, поэтому все, что вы сделали, чтобы заставить работать один цикл, было бы менее эффективным - это потребовало бы "декодирования" значения одного цикла до трех индексов массива, а это означает либо много сравнений, либо несколько операций деления / модуля. И они не "дешевые"!

И даже если бы вы это сделали, когда приходит следующее изменение спецификации и требует массива 12 x 15 x 3 вместо 6 x 6 x 6, у вас есть действительно неприятный набор изменений для реализации, тестирования и отладки.

Вам гораздо лучше оставить его в виде вложенных циклов.