Jump to content
  • 0

Вложенные циклы. Подскажите, в ч?м ошибка?


Shuranka
 Share

Question

При выполнении циклов выда?тся такая ошибка:

Fatal error: Maximum execution time of 30 seconds exceeded in W:homelocalhostwwwlern.rutable.php on line 13

А в браузере выводится только таблица умножения на 1. Подскажите в ч?м дело.

Вот код:

<html>
<head>
<meta content="text/html; charset=Windows-1251"
http-equiv="content-type">
<title>Таблица умножения.</title>
</head>
<body>
<?php
$a=1;
$b=1;
while($a<=9)
while($b<=10)
{
$c=$a*$b;
echo"{$a}x{$b}={$c}
";
$b++;
}
$a++;
?>
</body>
</html>

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Поставил фигурные скобки. Сообщение об ошибке перестало появляться, но внешний цикл по-прежнему не выполняется.

<html>
<head>
<meta content="text/html; charset=Windows-1251"
http-equiv="content-type">
<title>Таблица умножения.</title>
</head>
<body>
<?php
$a=1;
$b=1;
while($a<=9)
{
while($b<=10)
{
$c=$a*$b;
echo"{$a}x{$b}={$c}
";
$b++;
}
$a++;
}
?>
</body>
</html>

Link to comment
Share on other sites

  • 0

Получилось по совету D.S. Dentona через цикл for.

Вот код с небольшим оформлением:

<html>
<head>
<meta content="text/html; charset=Windows-1251" http-equiv="content-type">
<title>Таблица умножения.</title>
</head>
<body>
<div style="width:100%;text-align:center;margin:auto;">
<h2>Таблица умножения.</h2>
<table width="90%" cellspassing="0" cellpadding="5" border="1">
<tr>
<?php
for($a = 1; $a <= 10; $a++)
{
echo"<td style='text-align:left;width:10%;'>";
echo"<b>На {$a}</b>
";
for($b = 1; $b <= 10; $b++)
{
echo($a.'x'.$b.'='.($a * $b).'
');
}
echo"</td>";
}
?>
</tr>
</table>
</body>
</html>

А вложенные циклы while и do-while у меня почему-то не работают.

Link to comment
Share on other sites

  • 0

не знаю, у меня и через while работает, просто в данном случае for практичнее. while нужен когда неизвестно количество выполнений цикла

и вообще, отвыкайте нафиг от двойных кавычек в echo, товарищи... если б вы на перле писали, это понятно, но в пхп намного лучше использовать не "text{$var} more text", а 'text'.$var.' more text'

преимущество раз - интерпретатор сразу понимает что это надо выводить как есть

преимущество два - это читабельнее (в нормальных редакторах с подсветкой синтаксиса переменные выделяются отдельно, строки отдельно. если же переменная в таком виде, она от строки отличаться не будет (максимум выделится полужирным), как следствие - недосмотры

преимущество три - на большинстве сайтов итоговый хтмл-код пишется с двойной кавычкой вокруг атрибутов: src="http://..." и видя src='http://...' впадаешь в небольшой ступор, глазам это не так привычно. соответственно не надо экранировать echo('http://"'>'); как это происходит тут echo("http://"'>"); - т.е. опять код становится удобнее для взгляда

преимущество четыре - используя двойные кавычки для атрибутов в хтмл-коде мы оставляем одинарные для js-кода в этих атрибутах: http://...'; return false;" />, что опять же читабельнее

Link to comment
Share on other sites

  • 0

Не согласен. Вся разница в наших кодах в том, что я задал начальные значение обеих переменных до циклов. А в стальном вс? идентично. К тому же у других, в частности Девятилап, мой первоначальный вариант работает.

Link to comment
Share on other sites

  • 0

Да он по определению не будет работать: возьми, потрейсь и увидишь, что происходит с Б... Если алгоритм неверный, от он на любом языке работать будет неверно... Если правилно выбрать алгоритм, то потом не будет вопросов "почему программа тормозит???"...

Link to comment
Share on other sites

  • 0

Понял!!! Спасибо!!! Получается, что после 10 итераций цикла по $b, е? значение равно 10. Для выполнения следующей итерации по $a значение $b нужно снова сбросить на 1, но сделать это нужно за пределами цикла ($:), но внутри цикла ($a). Я верно рассуждаю?

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy