PHP를 사용하여이 패턴을 인쇄하는 방법은 무엇입니까?


10

이 패턴을 인쇄하는 방법?

무늬

$number = 5;
for ($i=1; $i <= $number ; $i++) { 
    for ($j=$i; $j >= 1;$j--){
        echo "0";
    }
    echo "\n";
}

인쇄물

0
00
000
0000
00000

나는 이것을 시도했지만 스타와 제로 문자를 인쇄하는 데 혼란 스럽다.

for ($i=1; $i <= $number ; $i++) { 
    $sum = 0;
    for ($j=$i; $j >= 1;$j--){
        $sum +=$j;
    }
    echo $i ." => " .$sum ."\n";
}

인쇄물

1 => 1
2 => 3
3 => 6
4 => 10
5 => 15

답변:


16

str_repeat필요한 길이의 문자열을 생성하는 데 사용할 수 있습니다 . 삼각형 숫자의 (1, 3, 6, 10, 15, ...)경우 i'번째 숫자를 i(i+1)/2다음 과 같이 생성 할 수 있습니다 .

$number = 5;
for ($i = 1; $i <= $number; $i++) {
    echo str_repeat('*', $i * ($i + 1) /2) . str_repeat('0', $i) . PHP_EOL;
}

산출:

*0
***00
******000
**********0000
***************00000

3v4l.org 데모

출력의 삼각형 부분 (즉 i, 1에서 숫자의 합)을보다 문자 그대로 생성 하려면이 코드를 사용 하여 각 반복의 출력에 $i *'와 1 0을 추가 할 수 있습니다 .

$line = '';
$number = 5;
for ($i = 1; $i <= $number; $i++) {
    $line = str_repeat('*', $i) . $line . '0';
    echo $line . PHP_EOL;
}

산출:

*0
***00
******000
**********0000
***************00000

3v4l.org 데모


1
PHP_EOL휴대 성 #justsayin입니다

@Phil funny ... 과거에 PHP_EOL을 사용했을 때 지나치게 복잡하다는 비난을 받았지만 개인적으로 나는 당신에게 동의하고 업데이트 할 것입니다.

3

대체 논리를보다 문자 그대로 읽는 방법을 사용하는 또 다른 방법이 있습니다. 여기서는 이전 줄을 가져 와서 줄 번호 **섹션에 추가 한 다음 새 후행 0에 태그를 지정하여 각 후속 줄을 형성 합니다.

$line = "*0";
$max = 5;
$counter = 1;

do {
    echo $line . "\n";
    $line = preg_replace("/(\*+)/", "\\1" . str_repeat("*", ++$counter), $line) . "0";
} while ($counter <= $max);

인쇄합니다 :

*0
***00
******000
**********0000
***************00000

0

for 루프에서 0의 개수는 $ i와 같습니다. 따라서 별 수를 계산 한 다음 str_repeat를 수행하면됩니다.

$count = 5;

for ($i=1; $i <= $count; $i++) {

  $stars = 0;
  for($j=1; $j <= $i; $j++) {
    $stars = $stars + $j;
  }

  echo str_repeat('*', $stars).str_repeat('0', $i)."\n";
}

산출:

*0
***00
******000
**********0000
***************00000

0

$ line = '';

($ i = 1; $ i <= 5; $ i ++) {

$ line = str_repeat ( '*', $ i)입니다. $ line '0'; // str_repeat () -> 문자열 얻기 // 길이

echo $ line. PHP_EOL; // PHP_EOL --->는 문자를 나타냅니다.

}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.