Raspberry Pi_Kor_24.4.6 PHP 실행 제어


Published Book on Amazon


All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2


출판된 한글판 도서


최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상)
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하)


Original Book Contents


24.4.6  실행 제어

 

24.4.6.1    조건 제어

 

조건식에서 "True", "False"를 판단하는 기준 값은 다음과 같다.

    False           -- zero             

    True                      -- 1 또는 non zero

 

 

   if ... elseif ... else

 

"if" 문은 지정한 조건이 "True"이면 지정 명령을 실행하고, "False"이면 다음의 새로운 조건을 검사한다. "If ~" 형식, "if ~else" 형식, "if ~elseif ~else" 형식의 변형을 사용할 수 있다.

 

if  (condition) {
    code to be executed if condition is true;


} elseif (condition) {
    code to be executed if condition is true;   


} else {
    code to be executed if condition is false;  
}

 

[사용 Example]

다음은 "if" 문의 사례이다.

 

<?php

 $t = date("H");

 

if ($t < "10") {

     echo "Have a good morning!";

 } elseif ($t < "20") {

     echo "Have a good day!";

 } else {

     echo "Have a good night!";

 }

 ?>

 

 

   switch

 

"switch" 문은 연산식의 값이 지정된 조건의 값과 일치하는 경우, "break" 문을 만날 때까지 지정된 문장을 수행한다. 만약 "break" 문이 없으면 "case" 문과 상관없이 아래의 문장을 계속 수행한다. 조건이 맞는 것이 없으면 "default"에서 지정한 문장을 수행한다.

 

switch (n) {
    case value-1:
        code to be executed if n= value-1;
        break;
    case value-2:
        code to be executed if n= value-2;
        break;
    case value-3:
        code to be executed if n= value-3;
        break;
    default:
        code to be executed if n is different from all labels;
}


 

[사용 Example]

다음은 "switch"문의 사례이다.

 

<?php
$favcolor = "red";

switch ($favcolor) {
    case "red":
        echo "Your favorite color is red!";
        break;
    case "blue":
        echo "Your favorite color is blue!";
        break;
    case "green":
        echo "Your favorite color is green!";
        break;
    default:
        echo "Your favorite color is neither red, blue, or green!";
}
?>

 


 

24.4.6.2    반복처리(loop)

 

일정한 조건하에서 특정 문장을 반복하여 실행하고자 할 때 순환처리를 이용할 수 있다. 다음과 같은 순환처리를 사용할 수 있다.

    while          -- 지정한 조건이 "True"로 유지되는 동안 처리를 반복한다.

    do ... while -- 먼저 한번 실행한 다음지정한 조건이 "True" 로 유지되는 동안 처리를 반복한다.

    for            -- 지정한 수만큼 반복 처리한다.

    foreach       -- 배열에 있는 각 element에 대해서 처리를 반복한다.

 

 

   "while" loop

 

"while" loop는 특정한 조건이 "True"로 유지되는 동안 계속 반복 처리한다.

 

다음 형식을 사용할 수 있다.

 

while (condition is true) {

    code to be executed;

 }

while (condition is true) :

    code to be executed;

endwhile

 


 

[사용 Example]

다음은 "while" loop의 사례이다.

 

<?php
/* example 1 */

$i = 1;
while ($i <= 10) {
    echo $i++;  /* the printed value would be
                   $i before the increment
                   (post-increment) */
}

/* example 2 */

$i = 1;
while ($i <= 10):
    echo $i;
    $i++;
endwhile;
?>

 


 

   "do ... while" loop

 

"do while" loop는 지정한 문장을 처음 한번 실행한 다음지정된 조건을 테스트하고 지정한 조건이 "True"로 유지되는 동안 처리를 반복한다.

 

do {
    code to be executed;
} while (condition is true);

 

"do while" loop에서는 지정된 문장을 먼저 수행한 뒤 조건을 테스트하므로, 조건이 처음부터 "False"인 경우에도 적어도 한번은 지정된 문장이 수행된다는 것을 알 수 있다.

 

[사용 Example]

다음은 "do while" loop의 사례이다.

 

<?php
$x = 1;

do {
    echo "The number is: $x <br>";
    $x++;
} while ($x <= 5);
?>

 


 

   "for" loop

 

"for" loop는 지정된 문장을 지정한 회수만큼 반복하여 실행한다.

 

for (init counter; test counter; increment counter) {

     code to be executed;

 }

for (expr1; expr2; expr3):

    statement

    ...

endfor;

 

    init counter             -- loop counter을 초기화한다. loop counter가 시작하는 값이다.

    test counter            -- 반복을 계속하는 조건을 지정한다. 조건이 "True"이면 반복이 계속되고, "False"이면 반복이 끝난다.

    increment counter    -- loop counter 값을 증가시키는 방법이다.

 

[사용 Example]

다음은 "for" loop의 사례이다.

 

<?php
for ($x = 0; $x <= 10; $x++) {
    echo "The number is: $x <br>";
}
?>

 

 


 

   "foreach" loop

 

"foreach" loop는 배열에서만 사용할 수 있다. 배열 안에 있는 각 element들에 대해서 지정한 문장을 반복해서 수행한다.

 

array에서 value만을 사용할 때는 다음 형식을 사용한다.

 

foreach (($array as $value) {

    statement

}

 

array에서 key value를 모두 사용할 때는 다음 형식을 사용한다

 

foreach (($array as $key => $value) {

    statement

{

 

반복할 때에는 array의 현재 element 값이 "$value"에 대입되고, array의 포인터가 하나씩 이동한다. array의 마지막 element에 대해서 코드 수행이 끝나면, 전체 반복문이 끝난다.

 

[사용 Example]

다음은 array value만 사용하는 사례이다.

 

<?php
$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $value) {
    echo "$value <br>";
}
?>

 


 

[사용 Example]

다음은 array key value를 동시에 사용하는 사례이다.

 

<?php
$colors = array("red", "green", "blue", "yellow");

foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br />\n";
}
?>

 

 


 

24.4.6.3    순환처리 중단 및 계속

 

   "break"  

 

"break" 문은 "while", "do-while", "for", "foreach", "switch" loop 구조에서 현재 실행하고 있는 loop 처리를 종료하고, loop 구조 다음에 있는 명령으로 진행한다.  

 

break  [ n ]

 

중첩된 내부 loop 구조에서 "break" 문은 어디 수준의 상위 loop 구조까지 빠져나갈지를 지정하기 위해서 숫자 argument를 사용할 수 있다. 특별히 지정하지 않으면 "1" 값이 지정된 것으로 간주한다.

 

[사용 Example]

다음은 "break" 문의 사례이다.

 

<?php
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list(, $val) = each($arr)) {
    if ($val == 'stop') {
        break;    /* You could also write 'break 1;' here. */
    }
    echo "$val<br />\n";
}

/* Using the optional argument. */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* Exit only the switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* Exit the switch and the while. */
    default:
        break;
    }
}
?>

 


 

   "continue"

 

"continue" 문은 loop 구조 안에서 현재 loop 내부에 남아있는 나머지 처리를 생략하고, 조건값을 평가하는 단계로 진행하여 새로운 반복처리 작업을 계속한다.  

 

continue  [ n ]

 

중첩된 내부 loop 구조에서 "continue" 문은 어떤 수준의 상위 loop 구조까지 처리를 생략할 것인지를 지정하기 위해서 숫자 argument를 사용할 수 있다. 특별히 지정하지 않으면 1 값이 지정된 것으로 간주한다.

 

"break" 문은 지정된 loop 구조까지 처리를 중단하고, 그 밖으로 빠져 나가지만, "continue"문은 지정된 loop 구조까지의 남아 있는 처리를 생략하고, loop 구조 처리를 새로 시작한다는 점에서 차이가 있다.

 

[사용 Example]

다음은 "continue" 문의 사례이다.

 

<?php
while (list($key, $value) = each($arr)) {
    if (!($key % 2)) { // skip odd members
        continue;
    }
    do_something_odd($value);
}

$i = 0;
while ($i++ < 5) {
    echo "Outer<br />\n";
    while (1) {
        echo "Middle<br />\n";
        while (1) {
            echo "Inner<br />\n";
            continue 3;
        }
        echo "This never gets output.<br />\n";
    }
    echo "Neither does this.<br />\n";
}
?>

 


 

Leave a Reply