PHP

 

 

       print(date(“F d Y z l”));

       echo “

       echo (date(“A h”));

       $c_date=getdate(time());

       

       printf(“
%d년 %s월 %d일
”, $c_date[“year”],            $c_date[“month”], $c_date[“mday”]);

       printf(“요일 :  %s
”, $c_date[“weekday”]);

        

       printf(“%d시 %d분 %d초
”, $c_date[“hours”], $c_date[“minutes”], $c_date[“seconds”]);

       

       

   

       

?>

->출력

March 08 2016 67 Tuesday
AM 10
2016년 March월 8일
요일 : Tuesday
10시 48분 48초

5.1.6 선택문 if의 다른 표현

 

PHP는 중괄호({})를 쓰는 대신 if(expr)뒤에 콜론(:)을 찍고, 하나 이상의 문장을 나열한 후에 endif; 로 끝내는 방법을 제공한다. 특히 if 문 안에 여러 줄의 HTML 블록(문장)을 삽입하는데 유용하게 사용될 수 있다.

   $a = 5;

   if ($a == 5):

?>

       

       A is equal to 5. 

       A는 5이다.

       

->출력

A is equal to 5.
A는 5이다.

    $a=10;

    

    if($a==5):

    print “a equals 5 .
” print “a 는 5이다.”

    elseif ($a==6):

    print “a equals 6.
” print “a는 6이다.”

    else :

    print “a is neither 5 nor 6.

    print “a는 5도 아니고 6도 아니다.”

   

    endif

    

?>

->출력

a is neither 5 nor 6.
a는 5도 아니고 6도 아니다.

위의 예제는 elsief()의 변형된 표현 방법으로 HTML 문서 작성시 유용하게 사용할 수 있다.

 

$i =1; $FACT =1;

 

for($n =2; $n <= 6; $n++){

 

     while($i <= $n){

          $FACT =$FACT *$i;

          $i++;

     }

print (“$n FACTORIAL ==> $FACT 
”);

}

 

 

?>

->출력

2 FACTORIAL ==> 2
3 FACTORIAL ==> 6
4 FACTORIAL ==> 24
5 FACTORIAL ==> 120
6 FACTORIAL ==> 720

구구단 출력

 

구구단 출력

  

 

    

for($i =2 ; $i <=9 ; $i++){

 

    echo “$i 단 : “

     for($j=1; $j <=9; $j++){

 

     echo $i .“*”.$j .“=”.$i*$j.“, “

     }

 

echo “

 

}

 

?>

->출력

구구단 출력

 

선입니다.

2 단 : 2*1=2, 2*2=4, 2*3=6, 2*4=8, 2*5=10, 2*6=12, 2*7=14, 2*8=16, 2*9=18,
3 단 : 3*1=3, 3*2=6, 3*3=9, 3*4=12, 3*5=15, 3*6=18, 3*7=21, 3*8=24, 3*9=27,
4 단 : 4*1=4, 4*2=8, 4*3=12, 4*4=16, 4*5=20, 4*6=24, 4*7=28, 4*8=32, 4*9=36,
5 단 : 5*1=5, 5*2=10, 5*3=15, 5*4=20, 5*5=25, 5*6=30, 5*7=35, 5*8=40, 5*9=45,
6 단 : 6*1=6, 6*2=12, 6*3=18, 6*4=24, 6*5=30, 6*6=36, 6*7=42, 6*8=48, 6*9=54,
7 단 : 7*1=7, 7*2=14, 7*3=21, 7*4=28, 7*5=35, 7*6=42, 7*7=49, 7*8=56, 7*9=63,
8 단 : 8*1=8, 8*2=16, 8*3=24, 8*4=32, 8*5=40, 8*6=48, 8*7=56, 8*8=64, 8*9=72,
9 단 : 9*1=9, 9*2=18, 9*3=27, 9*4=36, 9*5=45, 9*6=54, 9*7=63, 9*8=72, 9*9=81,

마름꼴 만들기

                          

 

 마름모꼴 만들기  

 

 

  

 

   if(isset($_GET[“value”])){

   

   $value=$_GET[“value”];

   echo “

   

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

         printf(“%d”, $i % 10);

            echo “

   

   

   

   $k =($value -1)/ 2;

   for($i = 1; $i <= $value; $i+=2) {

        for($j = 1 ; $j <= $k; $j++)

        echo “ ”

         $k–;

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

                echo “*”

                 echo “

   }

    

   

         $cnt = 0;

        for($i = $value-2; $i > 0; $i–) {

               $cnt++;

              for($j = 0 ; $j < $cnt; $j++)

              echo “ ”

              for($j = $i ; $j > 0 ; $j–)

               echo “*”

               echo “

              $i–;

             }

           echo “

   }

?>

 

->출력

 

12345678901234567
*
***
*****
*******
*********
***********
*************
***************
*****************
***************
*************
***********
*********
*******
*****
***
*

5.2.4. foreach() 문

PHP4 이후 버전은 perl 등의 다른 언어가 제공하는 foreach 구조를 제공한다. foreach()는 배열의 반복적인 작업을 처리하는데 유요하다. foreach() 에는 두 가지 문법이 있는데, 두 번째 것은 첫 번째 것의 부분 확장이나 매우 유용하게 사용할 수 있다.

foreach(array_expression as $value ) statement;

foreach(array_expression as $key => $value ) statement;

첫 번째 방법은 array_expression으로 주어진 배열에 대해 순환적업(loop)을 수행한다. 개개의 순환작업에서, 배열의 원소는 $value에 저장되고 내부 배열 포인터(interanl array pointer) 는 하나 증가하여 다음 작업시에 새로운 원소를 가져오도록 한다. 두 번째 방법은 첫 번째와 동일한 작업을 하지마, $key 에 해당 원소의 키 값을 저장하게 된다.

foreach() 문이 처음 수행될 때, 내부 배열 포인터(internal array pointer) 는 자동적으로 배열의 첫 번째 원소로 설정된다. 이 말의 의미는 foreach 문을 사용할 때 reset()을 미리 호출할 필요는 없다는 것이다. 따라서 두 개의 문장은 동일한 결과를 만든다.

 

$a =array(10, 20, 30, 40);

reset($a);

 

while (list(, $value) =each($a)) {

   echo (“each 함수를 이용합 값 value :$value
\n”);

}

 

foreach ($a as $value){

   echo (“foreach() 함수를 이용합 값 value :$value
\n”);

}

 

 

?>

->출력

each 함수를 이용합 값 value :10
each 함수를 이용합 값 value :20
each 함수를 이용합 값 value :30
each 함수를 이용합 값 value :40
foreach() 함수를 이용합 값 value :10
foreach() 함수를 이용합 값 value :20
foreach() 함수를 이용합 값 value :30
foreach() 함수를 이용합 값 value :40

추가적으로 다음의 예제를 살펴보자. 변수 $a에 배열 객체(1, 2, 3, 7) 를 할당해 주고, foreach($a as $v) 로 $v 에 각각 값을 할당하여 출력해 준다. 변수 $a 에 key 값을 다음과 같이 할당하여 준다.

$a = array(“one” =>1, “two”=>2, “three”=>3, “seven” =>7);

할당된 key값은 변수 $k 에 다음과 같이 할당해 준다.

foreach($a as $k => $v)

할당된 변수 $v를 다음과 같이 출력한다.

print “\$a[$k] => $v
”;

배열의 킷값 표시 =>   $k=>$v

    $a = array(1, 2, 3,7);

    foreach ($a as $v)

    print “\$a 의 현재 값 : $v

 

    $a = array(‘one’ =>1, ‘two’=>2, ‘three’=>3, ‘seven’ =>7);

    

    

    foreach ($a as $k=>$v)

    print “\$a 의 키값 $k 현재 값 : $v

?>

5.3.2 continue 문

      $arr = array(1, 2, 4, 5);

      while (list ($key, $value) = each ($arr)) {

              if (!($key % 2))  continue  // $key가 홀수이면 while문으로 제어 이동

              echo “key가 짝수번째 값 => $value 

      }

     echo “

     $i = 0;

     while (++$i < 3) {

            echo “\$i => $i,  while문 1번째
\n”

            while (1) {

                   echo ”  while문 2번째
\n”

                   while (1) {

                         echo ”  while문 3번째
\n”

                         continue 3;

                   }

             echo “이 곳은 제어가 이동이 안되어 출력이 안됨

            }

     echo “이 곳은 제어가 이동이 안되어 출력이 안됨

     }

?>

->출력

key가 짝수번째 값 => 2
key가 짝수번째 값 => 5

$i => 1, while문 1번째
while문 2번째
while문 3번째
$i => 2, while문 1번째
while문 2번째
while문 3번째

5.3.3 Return 문

$a =10; $b=5;

$c =mu($a, $b);

print (“\$a*\$b = $c“);

 

function mu($a, $b){

    return ($a * $b);

}

 

?>

->출력

$a*$b = 50

5.3.4 Exit문

exit문은 break문처럼 특정 실행 흐름에서 제어를 벗어나도록 해주는 명령문이다. 그러나 exit문은 모든 실행을 중단시킨다는 점이 다르고, 그 다음부터는 어떠한 텍스트(PHP든 HTML이든) 도 브라우저에게 전달되지 않는다. exit 문은 주로 더 이상의 실행이 아무런 의미가 없거나 실행을 계속하면 문제가 생길 수 있는 심각한 오류를 만나서 스크립트의 실행 자체를 중지해야 할 필요가 있을 때 사용한다.

다음은 sum() 함수에서 전역변수 $a를 출력하고 1씩 증가 시켜주는 프로그램으로 sum() 함수를 두 번 실행하고 exit문을 만나므로 마지막 sum() 함수를 실행하지 않고 작업을 종료해준다.

     $a =0;

     

     function sum(){

     

         global $a;

         echo “전역변수 a의 값 : $a 

         ++$a;

     }

     

     sum();

     sum();

     exit

     sum();

     

     

?>

->출력

전역변수 a의 값 : 0
전역변수 a의 값 : 1

5.4.1 require 문

require() 문은 C preprocessor 의 #include와 비슷하게, 자신이 지정한 파일로 대체한다.

include() 되거나 require() 되어 읽혀지는 파일은 포함됨 파일의 처음에 PHP모드에서 빠져나와 HTML모드로 들어가고, 마지막에 PHP모드로 복귀한다. 따라서 포함될 파일의 PHP코드는 적절한 PHP 시작, 종료 태그에 둘러싸여 있어야 한다. 이것은 require() 문을 루프 구조 안에 두어, 매번 다른 파일을 읽어 들일 수 없다는 것을 의미한다. 이런 동작을 위해서는 include()문을 사용해야 한다. require()문은 다음과 같이 사용한다.

require(‘file.inc’);

require()는 사실 함수가 아니라 제어구조이다. 따라서 함수와는 다른 규칙을 따른다. 이를 테면 require()는 다른 어떤 제어구조와도 사용할 수 없으며 반환 값이 없다. (반환 값을 돌려 받으려면 파싱 에러가 난다)

include()와 다르게, require()는 언제나 해당 파일을 읽어온다. 심지어 해당 라인이 전혀 실행되지 않아도 읽어온다. 만약 조건에 따라 파일을 포함시키고 싶다면 include()문을 사용하여야 한다. 조건 절은 require()에 아무 영향을 미치지 못한다. 그러나 require() 문이 있는 줄이 실행되지 않는다면 해당 파일의 어떤 코드도 실행되지 않는다.

include()와 require() 모두 호출한 스크립트 안으로 원하는 파일의 내용 자체를 끌어들이는

(pull)것이지 HTTP 나 그와 비슷한 방식으로 해당 타겟을 call하는 것이 아니다. 따라서 현재 범위 안에서도 그대로 사용된다.

다음 예제는 for문을 이용하여 require “file1.inc” 파일을 불러들여 자신과 대체하여 반복하여 사용한 예제로 file1.inc의 변수 $i 값을 3번 출력해 준다.

require1.php

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

           require “file1.inc”

?>

file1.inc

           echo “변수 i값 :  $i 

?>

->출력

변수 i값 : 1
변수 i값 : 2
변수 i값 : 3

다음은 require “file2.inc” 파일에 정의 된 sum($a, $b) 함수를 for문을 이용하여 3번 반복하여 호출해준 프로그램으로 “file2.inc”에서 변수 $a 와 $b를 golbal변수로 선언해서 그 값을 1씩 증가하여 출력해주고 있다.

“file2.inc”

        function sum($a, $b) {

             global   $a, $b;

              $c = $a + $b;

              echo “a 값=> $a, b 값 => $b, c  값 => $c 

              $a++;  $b++;

              return $c;

        }

?>

      require “file2.inc”

      $a = 10; $b = 20;

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

             $c = sum($a, $b);

      }

?>

->출력

a 값=> 10, b 값 => 20, c 값 => 30
a 값=> 11, b 값 => 21, c 값 => 32
a 값=> 12, b 값 => 22, c 값 => 34

global 변수가 아닌 경우 출력

a 값=> 10, b 값 => 20, c 값 => 30
a 값=> 10, b 값 => 20, c 값 => 30
a 값=> 10, b 값 => 20, c 값 => 30

PHP3에서는 require() 로 포함된 파일 안에서 return 문을 사용할 수 있었다. 단, return 문이 포함된 파일의 global scope에서 나타나는 경우만 가능하고, 다른 어떠한 블록 ({} 내부)에서도 사용할 수 없다. 그러나, PHP4 이후 버전에서는 이런 기능 자체가 없어져 버렸다. 만약 이런 기능을 사용하고 싶다면 include() 문을 사용하기 바란다.

위 예문 require()을 모두 include 대체하여도 결과 값은 같게 나온다.

5.4.2 include 문

include문은 지정한 파일을 읽고 실행한다. include() 되거나 require() 되어 읽혀지는 파일은 포함된 파일의 처음에 PHP모두에서 빠져나와 HTML모드로 들어가고, 마지막에 PHP모드로 복귀한다. 따라서 포함될 파일의 PHP코드는 적절한 PHP 시작, 종료 태그에 둘러싸여 있어야 한다. 이 동작은 실행 중 include() 문을 만날 때마다 일어난다. 따라서 반복문안에 include() 문을 두어 매번 다른 파일을 읽어 들이도록 할 수 있다.

다음 예제는 변수 $files에 배열(‘first.inc’, ‘second.inc’, ‘third.inc’ )로 파일명을 저장하고

for문을 이용하여 세 개의 파일을 순서적으로 실행해주는 프로그램으로 for문의 변수 $i값을 출력결과에 나타내주고 있다.

#파일 이름 :include1.php

     $files = array(‘first.inc’, ‘second.inc’, ‘third.inc’);

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

          include $files[$i];

     }

?>

#파일 이름 :first.inc

   echo “first.inc 출력 : 변수 i값 => $i 

?>

#파일 이름 :second.inc

   echo “second.inc 출력 : 변수 i값 => $i 

?>

#파일 이름 : third.inc

   echo “third.inc 출력 : 변수 i값 => $i 

?>

->출력

first.inc 출력 : 변수 i값 => 0
second.inc 출력 : 변수 i값 => 1
third.inc 출력 : 변수 i값 => 2

include()는 문장을 만날 때마다 매번 재평가되어 재실행된다는 점에서 require()와 다르다.

반면에 require()문은 지정된 파일 내용의 실행여부에 관계없이 (예를 들어 if 문 안에 들어 있고 상태가 거짓인 경우에도), require()문을 처음 만났을 때는 지정된 파일로 대체된다. include문은 특별한 구조이므로 include문이 조건절 안에 있다면 반드시 블록({})으로 둘러싸야 한다. 그 형식은 다음과 같다.

if ($condition){

  include ($file);

}else{

  include ($other);

}

PHP는 모두 include() 된 파일 내에서, 파일의 수행을 종료하고, 파일을 부른 스크립트로 복귀하기 위해 return 문을 사용할 수 있다. PHP에서는 include() 파일의 return 시에 반환값을 사용할 수 있고, include() 문을 일반 함수처럼 반환 값을 받을 수 있다.

다음과 같이 “include2.php” 에 include() 문이 있다면, PHP3에서는 구문 에러를 발생시키지만 PHP4 이상 버전은 구문에러 없이 정상적으로 다음과 같은 결과를 출력한다.

#파일 이름 :before.inc

      echo “Before the return
\n”

      if (1) {

          return 30;

      }

      echo “After the return
\n”

?>

#파일이름  :include2.php

        $val = include(‘before.inc’);

        echo “File returned : ‘$val‘
\n”

?>

->출력

Before the return
File returned : ’30’

 

 

쉽게 배우는 PHP 프로그래밍 

G 734 | 개정판

정진용 , 정병열 지음 | 글로벌 | 2015년 02월 27일 출간 이 책의 개정정보 : 2013년 출간

 

about author

PHRASE

Level 60  머나먼나라

우리네 백성이 받는 재해(災害)는 저 하늘에서 떨어진 것이 아니라네. 오늘날 여러 가지의 재해가 있으나 이것은 하늘에서 비나 눈이 오듯 떨어져 내린 것이 아니고 백성들 자신의 나쁜 행동이 이런 재해를 불러온 것이다. -시경

댓글 ( 4)

댓글 남기기

작성

PHP 목록    more