<?php ?>


<?

echo '한문장이 끝나면 반드시 마침표를 찍어야 합니다.;

?>


식별자 규칙

1. 문자와 밑줄(_)로 시작한다.

2. 두 번째 글자부터는 숫자, 문자, 밑줄이 가능하다.

3. 밑줄 이외의 기호는 사용할 수 없다.

4. 문자는 유니코드(한글포함)도 가능하다.

5. 변수는 대소문자를 서로 구분된다.



변수

$name



문자열(String)

1. 큰따옴표

" " 내부에 특수문자나 변수의 사용이 가능


예를 들어,

$name = "유성민";

"나의 이름은 $name 입니다.";


특수문자

의미

\n

개행문자(줄 바꿈)

\r

캐리지 리턴

\\

역 슬래시

\t

수평 탭

\"

따옴표

\$

달러 표시


2. 작은 따옴표

" " 내부에 쓰인 특수문자와 변수가 허용되지 않는다.


3. 히어닥 문법

문자열의 시작을 알릴 때는 <<<


$str = <<<EOD

문자열이라네~

나도 문자열이라네~

EOD;


4. 나우닥 문법

히어닥 문법과 유사하나 다른 점은 식별자에 작은 따옴표가 붙는다는 표기법의 차이와 변수 등의 문자열 해석을 하지 않는다는 차이


heredoc은 따옴표 방식과 유사하고 nowdoc은 작은 따옴표 방식과 유사


$str = <<< EOT

내 이름은 "$name" 입니다.

문자열이 해석되지 않습니다.

EOT;


5. 변수의 해석

"문자열 내에 변수를 넣는 가장 쉬운 방법 : $money"

"문자열 내에 변수를 넣는 가장 안전한 방법 : {$money}"



슈퍼 전역 변수(미리 설정되어 있는 변수)

$_GET

HTTP GET 방식으로 넘어온 변수

$_POST

HTTP POST 방식으로 넘어온 변수

$_COOKIE

HTTP 쿠키 변수

$_FILES

업로드 시 파일 정보 변수

$_SESSION

세션 변수

$_SERVER

웹 서버와 PHP 환경에서의 환경변수

$_ENV

서버 시스템의 환경 변수

슈퍼 전역 변수는 모두 배열로 되어 있기 때문에 $_ENV['OS']와 같은 방법으로 변수에 접근할 수 있다.



static 변수

function Test(){

echo $a;

$a = "제발 출력해줘~";

}


아래는 static 사용 후


function Test(){

static $a = 0;

echo $a;

$a++;

}



define() 함수를 이용한 상수(자바에서 final과 같은 것)

<?

define("HELLO", "안녕하세요");

echo HELLO;

?>


위 예제는 안녕하세요 라는 문구를 출력합니다.


즉,

define("상수명","상수에 저장될 값");



논리연산자

이름

결과

$a and $b

AND

두 변수 모두 참일 때 TRUE

$a or $b

OR

두 변수 중 적어도 하나가 참이면 TRUE

$a xor $b

XOR

둘 중 하나만 참이면 TRUE, 둘의 진리값이 같으면 FALSE

!$a

NOT

변수가 거짓일 때 TRUE, 참이면 FALSE

$a && $b

AND

두 변수 모두 참일 때 TRUE

$a || $b

OR

두 변수 중 적어도 하나가 참이면 TRUE



문자열 연산자

$a = "안녕";

$b = "하세요";


$c = $a.$b;


변수와 변수 사이에 점을 찍어주는 것만으로 문자열은 서로 연결됩니다.

만약 두 문자열이 합쳐진 문자열 $c에 한마디를 더 추가하고자 한다면 다음과 같은 방식을 사용


$c .= "반가워요~";


$c .= " "; 의 의미는 $c = $c." "; 와 같습니다.



배열 연산자

배열을 서로 더하려면 + 기호를 이용할 수 있습니다.

<?

$a = array("a" => "사과", "b" => "바나나");

$b = array("a" => "배", "b" => "딸기", "c" => "포도");

$c = $a + $b;

?>


위 예제의 결과는 다음과 같다


$c = array("a" => "사과", "b" => "바나나", "c" => "포도");


이미 $a 배열에 a와 b가 있으므로 같은 키를 가지는 값은 덮어쓰지 않고 중복되지 않는 것만 추가



include 와 require

include와 require는 다른 파일을 가져와서 해당 위치에 파일의 내용을 적용하는 구조

include의 경우에는 경고만 출력하고 프로그램이 계속해서 수행되는데 반해서

require를 사용하면 에러가 발생하여 프로그램이더는 실행되지 않습니다.


사용 법은,

include "/var/www/test.php";

include 'test.php';

include ('test.php');


$file = 'test.php';

include $file;


또는


inc.php 파일

<?

$name = "뇌를 자극하는 PHP 따라잡기';

?>

------------------------------------------------

main2.php 파일

<?

include 'inc.php';

echo $name;

?>



함수(Function)

<?

function sum($a, $b){

return $a+$b;

}


$result = sum(3, 4);

echo $result . "<br>";

$result = sum(5, 7);

echo $result . "<br>";

?>


위 결과는 7 과 12 가 출력 된다.



함수의 인자

1. 값에 의한 인자 전달

<?

function swap($a, $b){

$c = $a;

$a = $b;

$b = $c;

}


$num1 = 5;

$num2 = 6;

swap($num1, $num2);

echo "$num1, $num2";

?>


아무 변화 없이 $num1 은 5, $num2 는 6의 값이 출력

이것은 변수 $num1과 $num2가 전달된 것이 아니라 변수 $num1과 $num2의 값인 5와 6이 각각 인자 $a 와 $b에 복사되었기

때문입니다.


2. 참고에 의한 인자 전달

<?

function swap(&$a, &$b){

$c = $a;

$a = $b;

$b = $c;

}


$num1 = 5;

$num2 = 6;

swap($num1, $num2);

echo "$num1, $num2";

?>


위 예제는 원본의 값을 수정합니다.


3. 기본 인자값

<?

function ezphp_net($url = "http://ezphp.net"){

return "홈페이지 주소 : $url<br>";

}

echo ezphp_net();

echo ezphp_net("http://www.ezphp.net");

?>



함수의 반환값

1. 값에 의한 반환

<?

function return_array(){

return array(0, 1, 2);

}


$array = return_array();

echo "$array[0], $array[1], $array[2]";

?>


위 예제의 결과는 0, 1, 2 가 출력됩니다.


2. 참고에 의한 반환

p121 참고


-----------------------------------------------------------------------------------------------------------------