Home » PHP -2. 변수

PHP -2. 변수

2.1. 기본문법

  • PHP에서 변수는 변수명 앞에 $ (달러사인)을 덧붙여 표현된다.\
  • 변수명은 대소문자를 구별한다.
  • PHP에서 변수명은 다음 규칙을 따른다.
    유효한 변수명은 문자나 밑줄로 시작하고, 그 뒤에 문자, 숫자, 밑줄이 붙을 수 있다.
    정규 표현식으로 표현하면 다음과 같다: ‘[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*’
    [php]
    <?PHP
    $name = “PHP Master”;
    $age = 25;
    echo $name . “의 나이는 “. $age .”세 입니다.”;
    ?>
    [/php]
  • 위의 예제에서 보면 PHP는 변수를 선언할 때 따로 변수형을 선언하지 않는다.

  • 한 문장의 끝은 ; (세미콜론)으로 끝맺음 한다.

  • PHP의 주석은 : 한 줄 주석 : // 사용
    [php]
    <?PHP
    //한 줄 주석 예제입니다.
    $age = 25; // $age는 숫자를 가지고 있는 변수 입니다.
    Echo $age .”입니다.”; // 화면에 출력 시킵니다.
    ?>
    [/php]

  • 여러 줄 주석 : /* */ 사용
    [php]
    <?PHP
    /*
    여러 줄 주석 예제입니다.
    $age = 25;
    Echo $age .”입니다.”;
    */
    ?>
    [/php]

2.2. 미리 정의된 변수

  • PHP는 상당량의 미리 선언된 변수를 제공한다.($_SERVER, $_GET, $_ENV, $_POST 등)
    ( http://php.net/manual/kr/reserved.variables.php)
  • PHP 4.2.0 이후 버전부터 PHP의 register_globals의 기본값은 off가 되어 기존에
    $DOCUMENT_ROOT로 사용할 수 있던 것이 $_SERVER[‘DOCUMENT_ROOT’]로 해야 된다.
  • 이런 설정들은 php.ini 파일에서 수정 할 수 있다.

2.3. 변수의 유효영역

  • 대부분의 경우 모든 PHP 변수는 한군데의 유효영역만을 갖는다.
  • 이 한군데의 유효영역은 include되거나 require된 파일로도 확장된다.
    [php]
    <?PHP
    $a = 1;
    include ‘b.inc’; //b.inc 파일 안에서도 $a 변수가 사용 가능하다.
    ?>
    [/php]

  • 사용자 선언 함수 안에서는 사용 할 수 없다.
    [php]
    <?PHP
    $a = 1;
    function test(){
    /* 함수 밖에 선언된 변수의 값을 출력해 보아도 함수 안에서는 새로운
    지역변수로 인식하기 때문에 값이 없다. */
    echo $a;
    }
    test();
    ?>
    [/php]

  • 사용자 선언 함수 안에서도 사용하기 위해서는 전역변수(global)로 선언 할 필요가 있다.
    [php]
    <?PHP
    $a = 1; $b = 2;
    function sum(){
    /* 함수 밖에 선언된 변수를 사용하기 위해 global로 선언한다. */
    global $a, $b;
    $b += $a; // $b = $b + $a와 같은 의미이다.
    }
    sum();
    echo $b;
    ?>
    [/php]

  • 정적변수(static)는 로컬함수 영역에서만 존재하나 프로그램이 그 영역을 떠나지 않으면 그 값을 잃지 않는다.
    [php]
    <?PHP
    function test() {
    /*
    정적변수에 표현식의 결과를 할당하려 할 경우 오류가 발생한다.
    static $int = 1+2; 이런 경우 오류 발생.
    */
    static $a = 0;
    echo $a;
    $a++;
    }

    for($i=0; $i<10; $i++){
    test();
    }
    ?>
    [/php]

2.4. 가변 변수

  • 변수명이 유동적으로 설정 되거나 사용 될 수 있는데 이를 가변 변수라 한다.
    [php]
    <?PHP
    function test() {
    // 일반적인 변수 사용
    $a = ‘hello’;

    // 가변변수는 변수 값을 취해서 변수명으로 취급한다.
    $$a = ‘world’; //가변변수로 선언
    // 아래 내용은 둘 다 똑같이 출력된다.
    echo “$a ${$a}”;
    echo “$a $hello”;
    }
    ?>

    [/php]

2.5. 외부에서 오는 변수

  • HTML에서 form이 PHP로 전달될 때, 그 form안의 정보를 PHP내에서 자동적으로 가져온다. 이때, form안의 input name들이 변수명으로 사용된다.
    [php]
    <form action="foo.php" method="post">
    이름: <input type="text" name="username" /><br />
    메일: <input type="text" name="email" /><br />
    <input type="submit" name="submit" value="전송합니다!" />
    </form>
    [/php]

[HTML 문서]
[php]
<?php
// PHP 4.1.0부터 사용 가능
echo $_POST[‘username’];
echo $_REQUEST[‘username’];

import_request_variables(‘p’, ‘p_’);
echo $p_username;

// PHP 6부터 사용 불가. PHP 5.0.0부터, 이러한 긴 예약 변수는
// register_long_arrays 지시어로 비활성화 할 수 있습니다.
echo $HTTP_POST_VARS[‘username’];

// PHP 지시어 register_globals = on 일 경우에 사용할 수 있습니다.
// PHP 4.2.0부터 기본값은 register_globals = off 입니다.
// 이 방법을 사용하는 것은 권장되지 않습니다.

echo $username;
?>
[/php]

[form으로 전달된 PHP문서]
– 위의 문서에서 $_POST, $_GET의 사용 구분은 HTML문서의 form에서 method를 post로 했는지
get으로 했는지에 따라 구분해서 받아야 한다.
– URL의 끝에 ? 뒤에 붙는 경우는 GET으로 적용된다.
(http://www.test.com/test.php?id=3 인경우 id는 $_GET[‘id’]로 값을 꺼내와야 한다.)
– $_REQUEST의 경우는 post, get 구분 없이 값을 꺼내올 때 사용된다.