Количество пустых мест для печати каждого числа после окончания последнего

Я пытаюсь напечатать последовательность Фибоначчи в окне браузера с помощью PHP. Просто я просто хочу, чтобы каждый следующий номер начинался со столбца, где заканчивался последний номер. Чтобы я мог добиться такого эффекта:

введите описание изображения здесь

Для этого эффекта я использовал такой код:

<?php

list($a, $b) = [0,1];
$sp=0;

while (true) {
if ((int)$a < 0) {
break;
}
else {
for ($i=0; $i < $sp; $i++) {
echo("&nbsp;");
}
echo ("$a<br>");
// don't understand why double amount of spaces needed
$sp += 2 * strlen($a);
list($a, $b) = [$b, $a+$b];
}
}

Вопрос — зачем мне дважды столько пустых мест, сколько длина последнего номера?

0

Решение

Это связано с тем, что шрифт браузера по умолчанию не является моноширинным шрифтом, а пробелы занимают около половины горизонтального пространства в виде цифр.

Попробуйте в течение <pre> тег (который подразумевает моноширинный шрифт), и вы заметите разницу:

<?php

list($a, $b) = [0,1];
$sp=0;

echo  "<pre>";

foreach (range(0,20) as $n) {
if ((int)$a < 0) {
break;
}
else {
for ($i=0; $i < $sp; $i++) {
echo("&nbsp;");
}
echo ("$a<br>");
// don't understand why double amount of spaces needed
$sp += 2 * strlen($a);
list($a, $b) = [$b, $a+$b];
}
}

echo  "</pre>";

?>

Когда вы запустите приведенный выше код, в выводе будет слишком много места в каждой строке, так что теперь вам нужно удалить 2 * чтобы он выровнялся правильно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]