2015-11-01 3 views
-3

У меня вопрос. Я пытаюсь изучить PHP, и кто-то сказал мне, что выполнение «звездных» упражнений - это хороший способ изучения циклов. Я довольно далеко, но теперь я полностью застрял.PHP for loop puzzle

Это мой код;

for ($row = 0; $row < 11; $row++) 
{ 
    for($Y = 0; $Y < 1; $Y++){ 
    echo "Y";     
    } 
    for($O = 0; $O < 5; $O++){ 
    echo "O"; 
    } 
    if ($O <=5) { 
    echo "</br>"; 
    } 
} 

Im пытается напечатать следующее в моем браузере;

Y O O O O O 
O Y O O O O 
O O Y O O O 
O O O Y O O 
O O O O Y O 
O O O O O Y 
O O O O Y O 
O O O Y O O 
O O Y O O O 
O Y O O O O 
Y O O O O O 

Надеюсь, вы сможете мне помочь!

Заранее благодарен!

+0

И что у вас есть сейчас? –

+0

Символ «Y» находится только на первом месте каждой строки. –

+1

И почему это происходит? –

ответ

0
$n=11; 


for ($row = 0; $row < $n-1; $row++) 
{ 
    for($line=0; $line < $n;$line++){ 

    if ($row==$line) { 
     echo 'Y'; 
    } 
    else 
     echo 'o';} 
    echo '</br>'; 
} 
for ($row = $n-1; $row > 0; $row--) 
{ 
    for($line=0; $line < $n;$line++){ 

    if ($row==$line) { 
     echo 'Y'; 
    } 
    else 
     echo 'o';} 
    echo '</br>'; 
} 

Это начало, просто следовать матрицы по горизонтали, и всякий раз, когда вы получаете на текущей строке печати Y. Затем, начиная с последней строки к началу. Это напечатает две матрицы с их диагоналями.

Он может быть оптимизирован только с одной петлей, которая идет до половины $ n с прямым Y, а затем во второй половине назад.