Недавно у меня было интервью, в котором меня попросили сделать следующий вывод:

 9
 1
 8
 2
 7
 3
 6
 4

Сейчас я мало тренировался, но каким-то образом сумел это сделать. В котором я использую 2 переменные $i($i=1) и $num($num=9). И сделайте условие $i<5 и увеличьте его на единицу, пока не достигнет 5.

<?php
$num=9;
for($i=1;$i<5;$i++) {
    echo $num . "<br>". $i."<br>";
    $num--;
}
?>

Что дает результат, который мне нужен. Но есть другой способ сделать это, используя $i и $j в качестве переменных. Итак, я хочу знать, какой из них проще и лучше.

<?php 
for($i=1,$j=9; $j>=6; $i++,$j--){
    echo($j."<br/>".$i."<br />");
}
?>
1
varunkumar 24 Дек 2015 в 18:29

4 ответа

Лучший ответ

В более общем виде это можно записать так:

<?php
//Bounds
$upper = 9;
$lower = 1;

//Mid-point, use MOD 2 to add 1 for odd numbers
$mid = ( $upper + ( $upper % 2 ) ) / 2;


for( $i = $lower, $j = $upper; $i <= $mid && $j > $mid; $i++, $j-- )
{
    echo $j;
    echo "\n";
    echo $i;
    echo "\n";
}

Ближе к концу последовательности это становится немного расплывчатым. Предоставленная вами последовательность полностью игнорирует номер центра / поворота (5), а приведенный выше код делает то же самое для нечетного диапазона чисел, но показывает их для четных диапазонов. Если цель состоит в том, чтобы всегда игнорировать один или два центра (нечетный или четный), вы можете изменить второе условие центра в цикле for:

for( $i = $lower, $j = $upper; $i < $mid && $i !== $j; $i++, $j-- )
{
    echo $j;
    echo "\n";
    echo $i;
    echo "\n";
}
1
Chris Haas 24 Дек 2015 в 15:50

Одно переменное решение

for($i=1; $i<5; $i++) {
    echo 10 - $i . "<br>". $i."<br>";
}
1
Heroselohim 24 Дек 2015 в 15:58

Я думаю, было бы предпочтительнее запустить цикл с уменьшением от 9 и использовать переменную для отслеживания количества итераций:

$count = 0;

for ($i = 9; $i >= 6; $i--)
{
    $count++;
    echo $i."\n";
    echo $count."\n";
}
1
johng 24 Дек 2015 в 15:49

Это выглядит лучше для меня

for ($i=1, $j=9; $i<5; $i++,$j--) {
  echo $j;
  echo "\n";
  echo $i;
  echo "\n";
}
1
Mihail Petkov 24 Дек 2015 в 15:35