Первая строка имеет больший отступ, чем вы хотите, из-за лишних пробелов в начале этой строки:
<?php
Поскольку этот пробел находится вне тегов PHP, он выводится напрямую. Но поскольку он находится вне тегов PHP, он не включен в цикл и повлияет только на первую строку.
Вы можете сделать это, чтобы избежать этого:
<ul>
<?php
for ($Index = 1; $Index <= 10; $Index++) {
echo "\n <li>$Index</li>";
}
?>
</ul>
... и выровняйте теги <?php ?>
в начале строк, или вы можете сделать это:
<ul><?php for ($Index = 1; $Index <= 10; $Index++) { ?>
<li><?php echo $Index; ?></li>
<?php } ?></ul>
... но, как бы нелепо это ни звучало, это:
<ul><?php for ($Index = 1; $Index <= 10; $Index++) echo "\n <li>$Index</li>"; ?>
</ul>
... вероятно, это лучший способ добиться того, о чем вы говорите, оставляя наименьшее пространство для неопределенности (разные версии PHP, кажется, обрабатывают это немного по-разному - например, в PHP 4.3.10, по крайней мере, есть неявная строка перерыв после тега ?>
, которого нет в PHP 5 (я думаю, что это могло быть ошибкой). Это одна из причин, по которой я не использую смешанный HTML и PHP (хотя я знаю, что многие люди не согласны со мной в это точка), но я бы предпочел сделать следующее:
<?php
$out = "<ul>\n";
for ($Index = 1; $Index <= 10; $Index++) $out .= " <li>$Index</li>\n";
$out .= "</ul>";
echo $out;
?>