2015-11-10 45 views
2

Моего образца желаемого результат должен бытьКак получить следующий вывод с помощью PHP

1 2 3 4 5 
2  4 
3  3 
4  2 
5 4 3 2 1 

Вот мой PHP код

for($i=1;$i <= 5;$i++) { 
    for($j=1;$j<=$i;$j++) { 
     echo "$j"; 
    } 
    for($y=0;$y<(5-$i)*4;$y++) { 
     echo '&nbsp;'; 
    } 
    for($l=$i;$l>0;$l--) { 
     echo "$l"; 
    } 
    echo "<br/>"; 
} 

Но я получил этот выход.

выход: -

1  1 
12  21 
123 321 
1234 4321 
1234554321 

Пожалуйста, попытайтесь решить мою проблему. Заранее спасибо.

+5

выглядит как школьное задание! : p –

+0

Это был тест на проведение интервью. Я не смог решить :(@RonakPatel –

+0

Они специально просили вас использовать циклы? – andrewsi

ответ

2

Вот быстрое решение для произвольного массива значений 1-символов:

$values = range(1,7); 
$count = count($values); 
foreach($values as $k=>$v) { 
    if($k == 0) 
     echo implode(" ", $values), "\n"; 
    elseif($k == $count-1) 
     echo implode(" ", array_reverse($values)), "\n"; 
    else 
     echo $v, " ", str_repeat(" ", $count-2), $values[$count-1-$k], "\n"; 
} 

Это будет производить:

1 2 3 4 5 6 7 
2   6 
3   5 
4   4 
5   3 
6   2 
7 6 5 4 3 2 1 
+0

Спасибо, что ваш ответ принят для меня. :) –

3
for($i=1; $i<=5; $i++){ 
     echo $i." "; 
    } 
    echo "<br />"; 
    for($i=2; $i<=5; $i++){ 
     if($i==5){ 
      echo $i; 
     } 
     else{ 
      echo $i."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"; 
      if($i==2){ 
       echo (4)."<br />"; 
      } 
      if($i==3){ 
       echo (3)."<br />"; 
      } 
      if($i==4){ 
       echo (2)."<br />"; 
      } 
     } 
    } 

    echo " "; 
    for($i=4; $i>=1; $i--){ 
     echo $i." "; 
    } 

@Mark имеет лучшее решение, я думаю.

+0

Спасибо за ваш ответ. Да Марк решил мою проблему. :) –

+0

Ваш ответ также правильный. +1 для вас. :) –

1
$count = 5; 
$last = 0; 
for ($i = 1; $i <= $count; $i++) { 
    if($i == 1) { 
     for ($x = 1; $x <= 5; $x++) { 
      echo $x . ' '; 
     } 
     $last = $x; 
    } elseif ($i == 5) { 
     for ($b = 5; $b >= 1; $b--) { 
      echo $b . ' '; 
     } 
    } else{ 
     for($c=1; $c <= 5; $c++) { 
      if($c == 1) { 
       echo $i . ' '; 
      } elseif ($c == 5) { 
       echo ($last - $i) . ' ' ; 
      } else { 
       echo '&nbsp;&nbsp;&nbsp;'; 
      } 
     } 
    } 
    echo '<br>'; 
} 
+0

Это также хороший ответ +1 для этого. :) –

Смежные вопросы