for 문을 이용해 로또 번호 추출기를 만들어 보겠습니다. for 문을 이용해서 로또 프로그램을 구현해보면 반복문의 이해에 도움이 됩니다.


 <?php

 $arr = array();

 for($i=0; $i<6; $i++){

$arr[$i] = rand(1, 45);

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

if($arr[$i] == $arr[$j]){

$i--;

break;

}

}

 }


 print_r($arr);

 ?>


다음은 추출한 로또 번호를 for문을 이용해 오름차순으로 정렬해 보겠습니다.


 <?

 $arr = array();


 for($i=0; $i<6; $i++){

$arr[$i] = rand(1, 45);

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

if($arr[$i] == $arr[$j]){

$i--;

break;

}

}

  }


 $tmp = 0;

 for($i=0; $i<count($arr); $i++){

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

if($arr[$i] < $arr[$j]){

$tmp = $arr[$i];

$arr[$i] = $arr[$j];

$arr[$j] = $tmp;

}

}

 }


 print_r($arr); 

 ?>


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

2차원 배열을 아래 그림처럼 90도씩 회전시켜 그 결과를 출력하는 방법을 설명합니다. 

 1    2    3    4        13   9    5  1        16  15  14  13      4   8  12  16
 5    6    7    8  =>   14   10  6   2  =>   12  11  10  9  =>  3   7  11  15
 9    10  11  12       15   11  7   3         8   7    6   5       2   6  10  14
 13  14  15  16        16  12  8   4         4    3    2  1        1   5   9   13


ex.01)

 <?php

       $arr = array(

array(1, 2, 3, 4),

array(5, 6, 7, 8),

array(9, 10, 11, 12),

array(13, 14, 15, 16)

);


       for($i = 0; $i < count($arr); $i++)

{

for($j = 0; $j < count($arr); $j++)

{

echo $arr[$i][$j] . "\t";

}

echo "<br />\n";

}

echo "<br />\n";

 /*

 결과

 1    2    3    4

 5    6    7    8

 9    10  11  12

 13  14  15  16

 */


for($i = 0; $i < count($arr); $i++)

{

for($j = count($arr); $j > -1; $j--)

{

echo $arr[$j][$i] . "\t";

}

echo "<br />\n";

}

echo "<br />\n";

/*

 결과

 13    9     5   1

 14   10    6   2

 15   11    7   3

 16   12    8   4

 */


for($i = count($arr); $i > -1; $i--)

{

for($j = count($arr); $j > -1; $j--)

{

echo $arr[$i][$j] . "\t";

}

echo "<br />\n";

}

echo "<br />\n";

/*

 결과

 16   15   14   13

 12   11   10    9

  8    7     6     5

  4    3     2     1

 */


for($i = count($arr); $i > -1; $i--)

{

for($j = 0; $j < count($arr); $j++)

{

echo $arr[$j][$i] . "\t";

}

echo "<br />\n";


/*

 결과

 4   8   12   16

 3   7   11   15

 2   6   10   14

 1   5    9    13

 */

 ?>


 

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

php에는 최소값, 최대값을 구하는 함수가 있지만 여기서는 for 문을 이용해 최대값, 최소값을 구하는 방법을 설명합니다.



ex.01)

 <?php
 $arr = array(2, 3, 5, 50, 15, 21);
 $min = $max = $arr[0];

 for($i = 0; $i < count($arr); $i++)
 {
   if($max < $arr[$i])
   {
      $max = $arr[$i];
   }
   if($min > $arr[$i])
   {
      $min = $arr[$i];
   }
 }

 echo "최소값: " . $min;

 echo "<br />\n";

 echo "최대값: " . $max;


 ?>


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

php에서는 자체적으로 숫자를 정렬하는 함수를 제공합니다. 여기서는 함수를 이용하지 않고, for 문을 이용해 구현해 보겠습니다.


[2,3,5,50,15,21] 인 배열을 정렬해 보겠습니다.


ex.01)

 <?php

 $arr = array(2,3,5, 50, 15,21);

 $tmp = 0;

for($i=0; $i<count($arr); $i++)

{

for($j=0; $j<count($arr); $j++)

{

if($arr[$i] > $arr[$j])

{

$tmp = $arr[$i];

$arr[$i] = $arr[$j];

$arr[$j] = $tmp;

}

}

}

print_r($arr);

 

/*

 출력

Array

(

[0] => 50
[1] => 21
[2] => 15

[3] => 5

[4] => 3

[5] => 2

 );
 ?>




블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

반복문 for문을 이용해 피라미드식으로 별을 출력하는 방법을 설명합니다.

        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************



ex.01)

 <?php

 $num = 9;

 for($i = 0; $i<$num; $i++)

 {

for($J = $num - $i; $J > 0; $J--)

{

echo "&nbsp;";

}

for($q = 0; $q < 2*$i-1; $q++)

{

echo "*";

}

echo "<br />\n";

 }

 ?>


ex.02)

 <?php

 $num = 9;

 for($i = 0; $i<$num; $i++)

 {

for($J = $num - $i; $J > 0; $J--)

{

echo "&nbsp;";

}

for($q = 0; $q < $i; $q++)

{

echo "*";

}

for($w = 1; $w < $i; $w++)

{

echo "*";

}

echo "<br />\n";

 }

 ?>



블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

foreach문은 배열에서만 작동합니다. 배열이 아니면 php코드 내에 오류메시지를 출력하고, 다차원 배열이나 중첩도 가능하며, 키(key)와 원소(value)로 분리, 변수로 지정 가능합니다.

 // 첫번째 문법
 foreach (array_expression as $value) {
    statement;
 }

 // 두번째 문법
 foreach (array_expression as $key => $value) {
    statement;
 }

두가지 문법중 첫번째 문법은 배열의 원소만 가져오고, 두번째 문법은 키(key)와 원소(value)를 가져옵니다. 이 중 첫번째 문법이 더 유용할 것입니다. 아래 예제는 첫번째 문법을 사용한 것인데, $value앞에 "&"를 붙여서 다른 $arr배열원소로 쉽게 변경가능합니다.

 <?php
 $arr 
= array(1234
);
 foreach (
$arr as &$value
) {
    
$value $value 2
;
 }
 unset(
$value); 
// $value변수는 필요가 없으므로 삭제를 합니다.
 
var_export($arr
);

 
/*
  결과:
  array (
  0 => 2,
  1 => 4,
  2 => 6,
  3 => 8,
 )
 */
 ?>

다음은 다차원 배열을 중첩하여 원소(value)로 분리한 예입니다.

 <?php
 $a 
= array();
 
$a[0][0] = "a"
;
 
$a[0][1] = "b"
;
 
$a[1][0] = "y"
;
 
$a[1][1] = "z"
;
 
$b = array(); 
// 배열을 분리, $b변수에 작성하기 위해 초기화합니다.

 
foreach ($a as $v1) { 
// $a배열이 이차원 배열이므로 foreach가 두번 작성됩니다.
    
foreach ($v1 as $v2
) {
        
$b[] =  "$v2\n"
;
    }
 }
 
var_export($b
);

 
/*
 결과: 
 array (
  0 => 'a',
  1 => 'b',
  2 => 'y',
  3 => 'z',
 ) 
 */
 ?> 

아래는 키(key)와 원소(value)를 분리한 예입니다.

 <?php
 $a 
= array(
    
"one" => 1
,
    
"two" => 2
,
    
"three" => 3
,
    
"seventeen" => 
17
 
);

 foreach (
$a as $k => $v
) {
    echo 
"$k => $v.\n"
;
 }
 
/*
 결과:
 one => 1.
 two => 2.
 three => 3.
 seventeen => 17.
 */
 
?> 


다음 예도 기능적으로 동일하다는 것을 알 수 있습니다.

 <?php
 $arr 
= array("하나""둘""셋"
);
 
reset($arr
);
 while (list(, 
$value) = each($arr
)) {
    echo 
"while 값: $value<br />\n"
;
 }

 foreach (
$arr as $value
) {
    echo 
"foreach 값: $value<br />\n"
;
 }

 
/*
 결과:
 while 값: 하나<br />
 while 값: 둘<br />
 while 값: 셋<br />

 foreach 값: 하나<br />
 foreach 값: 둘<br />
 foreach 값: 셋<br />
 */
 ?>


if, while, for문 등 제어문과 마찬가지로 foreach문도 동일하게 아래 표현방식을 사용할 수 있습니다.

 // 괄호 문법
 foreach (array_expression as $value) {
    statement;
 }

 // 짧은 문법
 foreach (array_expression as $value)
    statement;

 // 콜론 문법
 foreach (array_expression as $value):
    statement;
 endforeach;


다른 함수나 제어문 앞에 @를 붙여서 오류가 날 경우 에러 출력을 감출 수 있는데, foreach문만은 @로 에러 출력을 제어하지 못하기 때문에 아래 방법으로 감추게 합니다.

 <?php
 $arr 
null
;
 if(
is_array($arr)) { 
// 배열이면 실행합니다.
     
foreach ($arr as $value
) {
        echo 
"값: $value<br />\n"
;
     }
 }
 
?>

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

루프형 while

while
루프형은 for문보다 단순한 루프형태라고 볼 수 있는데, if문처럼 단순히 참, 거짓에 의해 루프가 결정되기 때문입니다. expression조건식이 참"true"이면 내포되어있는 구문을 반복 수행하고 거짓"false"이면 중지합니다. if문과 마찬가지로 대체문법인 "콜론 문법"이 가능합니다.
 

 // 짧은 문법
 while (expression)
    statement;

// 괄호 문법
 while (expression) {
    statement;
 }

 // 콜론문법
 while (expression) :
    statement;
 endwhile;


while문도 중첩 사용이 가능합니다.

 while (expression) {
    statement;
    while (expression) {
       statement;
       while (expression) {
          statement;
       }
    }
 }


while루프형은 루프의 시작과 종료를 위해 증가, 감소를 사용하게 되는데, 이를 통제하기 위해 제어 변수(control variables: $i++, $i--)를 자주 사용하게 됩니다. 그리고 break문을 만나면 루프를 중지하고, continue문을 만나면 처음부터 다시 while문을 반복 수행과정을 가지게 됩니다.

 <?php
 $i 
1
;
 while (
$i <= 10
) {
    echo 
$i++, " \n"
;
 }

 
/*
 출력: 1 2 3 4 5 6 7 8 9 10
 */
 ?>

 <?php
 $i 
1
;
 while (
true
) {
     if(
$i 10
)
        break;
     echo 
$i
++;
 }

 
/*
 출력: 1 2 3 4 5 6 7 8 9 10
 */
 ?>


 <?php
 $arr 
= array("하""보""니""p""h""p""마""스""터"
);
 
reset($arr
);
 while (list(, 
$value) = each($arr
)) {
    echo 
"${value} \n"
;
 }

 
/*
 출력: 하 보 니 p h p 마 스 터
 */
 ?>


루프형 do-while

do-while
루프형은 적어도 한번은 실행하고 뒤에서 조건식을 비교합니다. 비교했을 때 "참"이라면 다시 루프를 진행합니다.

 <?php
 $i 
1
;
 do {
     echo 
$i++, ' '
;
     if(
$i 10
)
           break;
 } while (
true
);

 
/*
 출력: 1 2 3 4 5 6 7 8 9 10
 */
 ?>

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

for문은 조건식이 참일때까지 루프를 진행시킵니다. 반복문중 가장 많이 사용되는 문법이기는 하나 조건식을 잘못 코딩할 경우 무한루프를 형성하여 서버다운이라는 심각한 문제에까지 발생할 수 있다는 점에 주의가 필요할 만큼 단순하면서도 복잡합니다.

for문 형식
 for (expr1; expr2; expr3) {
    statement;
 }

첫번째 표현식(expr1)은 루프의 시작을 뜻합니다. 두번째 표현식(expr2)은 조건식으로 expr1의 값에 영향을 받습니다. expr1의 값을 대입하여 조건식이 참이면 루프를 멈추고, 거짓이면 expr3값을 증감(++) 또는 차감(--)시키며 루프를 형성합니다.

if문처럼 "콜론(:) 문법"을 사용할 수도 있습니다.

콜론문법
 for (expr1; expr2; expr3) :
    statement;
 endfor;

예제 (ex #1
 <?php
 
echo "<select name=\"sel\">\n"
;

 for ($=
0$i<=10
; $++) {
    echo 
"<option value=\"$i\">$i</option>\n"
;
 }
 echo 
"</select>\n"
;

 
/*  결과
 <select name="sel">
 <option value="0">0</option>
 <option value="1">1</option>
 <option value="2">2</option>
 <option value="3">3</option>
 <option value="4">4</option>
 <option value="5">5</option>
 <option value="6">6</option>
 <option value="7">7</option>
 <option value="8">8</option>
 <option value="9">9</option>
 <option value="10">10</option>
 </select>
 */
 
?>

for문내에 중첩도 가능합니다.

 <?php
 
echo "php 구구단 <br/><br/>\n"
;

 for (
$i=$i <= $i
++) {
     echo 
"$i 단 <br/>\n"
;

     for (
$j=1$j<=9;$j
++)  {
         echo 
"$i*$j=".$i*$j,"<br/>\n"
;
     }
     echo 
"<br/>\n"
;
 }
 
?>


C언어처럼 첫번째 표현식(루프의 시작), 또는 세번째 표현식을 공백으로 둘 수 있습니다. 그리고 두번째 표현식(조건식)을 생략할 경우 "참"으로 인식하여 루프를 형성합니다.

 <?php
 $i 
1
;
 for (; ; ) {
    if (
$i 10
) {
        break;
    }
   echo 
$i."&nbsp;"
;
   
$i
++;
 }

 
// 결과: 1 2 3 4 5 6 7 8 9 10
 
?>

 <?php
 
for ($i 1; ; $i
++)  {
    if (
$i 10
) {
        break;
    }
    echo 
$i."&nbsp;"
;
 }

 
// 결과: 1 2 3 4 5 6 7 8 9 10
 
?>

아래 예제를 보면 조금 특별하게 표현할 수 있습니다.

 <?php
 
for ($i 1$j 0$i <= 10$j += 1, print("i($i) => j($j)<br/>\n"), $i
++);

 
/* 출력:
 i(1) => j(1)
 i(2) => j(2)
 i(3) => j(3)
 i(4) => j(4)
 i(5) => j(5)
 i(6) => j(6)
 i(7) => j(7)
 i(8) => j(8)
 i(9) => j(9)
 i(10) => j(10)
 */
 
?>

 <?php
 $people 
= Array('Kalle','Pierre','merray','Cals'
);
 
 for(
$i 0$size sizeof($people); $i $size; ++$i
) {
    echo 
$people[$i]."&nbsp;"
;
 }

 
// 출력: Kalle Pierre merray Cals
 
?>
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

switch문은 if문과 비슷하나, if문보다는 다양하고 깔끔하게 표현할 수 있다는 점에 매력이 있습니다.

 switch (expression) {
 case (value1):
     statements;
     break;
 case (value2):
     statements;
     break;
 case (value3):
     statements;
     break;
 case (value4):
     statements;
     break;
 default:
     statements;
 }

switch문은 "switch(조건)"의 값을 각각 case의 조건식에 대입하여 참,거짓 여부를 비교합니다. 만일 동일한 값, 일치하는 값을 찾으면 break를 만날때까지 해당 스크립트를 실행하게 되는데, 만약 참인 case조건식에 break구문이 없으면 break구문을 만날때까지 여러 case구문이 실행되어 버려 엉뚱한 값을 얻는 경우도 발생되니 주의가 필요합니다. 일치하는 값이 없다면 default의 코드를 실행하게 됩니다.

예제 (ex #1

 <?php
 $s 
false
;
 
$s "php학생"
;
 switch(
$s
){
 case 
"asp학생"
:
  
$school "asp학생"
;
  
$cnt 1
;
 break;

 case 
"php학생"
:
  
$school "php학생"
;
  
$cnt 2
;
 break;

 case 
"비주얼학생"
:
  
$school "비주얼학생"
;
  
$cnt 3
;
 break;

 default:
  
$school "일반"
;
  
$cnt 0
;
 }

 echo 
$cnt"번 "$s"입니다."
// 출력: 2번 php학생입니다. 
 
?> 


아래 예는 좋은 학습이 될 것입니다.

예제 (ex# 2

 <?php
 $s 
false
;
 
$school false
;
 
$s "php학생"
;
 
$z 1
;
 switch(
$s
){
    case 
"asp학생"
:
        
$school "asp학생"
;
        
$cnt 1
;
    break;

    case 
"php학생"
:
        
$school "php학생"
;
        
$cnt 2
;
        if(
true
)
            echo 
"habony와 함께하는 php마스터 "
;
        switch(
$z
) {
            case 
3
:
                echo 
"php3"
;
            break;
            case 
2
:
                echo 
"php4"
;
            break;
            case 
1
:
                echo 
"php5"
;
                switch(
$cnt
) {
                    case 
1
:
                        echo 
" 고수되기"
;
                    break;
                    default;
                        echo 
" 배우기"
;
                } 
// 3 switch
                
echo "&nbsp;"
;
            break;
        } 
// 2 switch
    
break;

    case 
"비주얼학생"
:
        
$school "비주얼학생"
;
        
$cnt 3
;
    break;

    default:
        
$school "일반"
;
        
$cnt 0
;
 } 
// 1 switch

 
echo $cnt"번 "$s"입니다."
// 출력: habony와 함께하는 php마스터 php5 배우기 2번 php학생입니다. 
 
?> 

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

if문은 조건문 중에서 가장 쉽고 자주 사용되는 제어문으로 해당 조건문이 참인 경우에 if 또는 elseif구문으로 순차적으로 수행하고 마지막으로 거짓일 경우 else문을 수행하는 단순하면서도 아주 중요한 제어문의 하나입니다.


if문의 형식
 if (expression) { // 조건이 맞으면 실행
    statement
 }

if, else문의 형식
 if (expression) { // 조건이 맞으면 실행
    statement 1
 } else { // 조건이 맞지 않으면 실행
    statement 2
 }

if, else if, else문의 형식
 if (expression) { // 조건이 맞으면 실행, 맞지 않으면 다음 조건문 이행
    statement 1
 } else  if (expression) { // 조건이 맞으면 실행
    statement 2
 } else { // 조건이 맞지 않으면 실행
    statement 3
 }


예제 (ex #1

 <?php
 $a 
2
;
 
$b 1
;
 if (
$a $b
) {
    echo 
"a는 b보다 큽니다."
;
 }
 
?>
 
 
<?php
 
if (true) { 
// true는 1의 값을 가지므로....
    
echo "참입니다."
;
 }
 
?>


 
<?php
 
// 출력: 출력할까요?
 
if (!false
) {
    echo 
"출력할까요?"
;
 }
 
?>


 if문의 표현방식 #1
 
<?php
 
// 출력: "참 입니다."
 
$z 1
;
 
$int =  $z "참 입니다." "거짓 입니다."
;
 echo 
$int
;
 
?>


 if문의 표현방식 #2
 // 출력: 참 입니다.
 
<?
  
if (true
):
    echo 
"참 입니다."
;
 else:
    echo 
" 거짓 입니다."
;
 endif;
 
?>



 if문의 표현방식 #3
 // 출력: 두번째 구문 입니다.
 
<?php
   $c 
1
;
   if (
$x
):
     echo 
"첫번째 구문 입니다."
;
   elseif(
$c
):
     echo 
"두번째 구문 입니다."
;
   else:
     echo 
"거짓일때 출력합니다."
;
   endif;
 
?>


"if문의 표현방식 #3"의 예시처럼 콜론(elseif(조건):)으로 정의할때 "else if" 처럼 두 단어로 나눠서는 안됩니다. 아니면 PHP는 처리 오류로 판단해 버리므로 주의가 필요합니다.

아래 예제를 보면 If문은 다른 if문안에 무한정으로 중첩 사용하는 것도 가능합니다.

예제 (ex #2

<pre>
 
<?php
 $a 
2
;
 
$b 1
;
 if (
$a $b
) {
   if (
true
) {
      
$b
++;
      
$b
++;
      
$c 2
;
      if (
$b $c
) {
         
$c false
;
         if (
$c
) {
           echo 
'c값이 존재합니다. '
;
         } else {
           echo 
'c값이 존재하지 않습니다. '
;
         }
      } else if(
true
) {
       echo
'세번째 구문입니다. '
;
      }
   }
 }

 
// 출력: c값이 존재하지 않습니다.
 
?>

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요