PHP 기초 이해

2장 PHP 기초 이해
>> 목 표 <<
. PHP 프로그램 구조
. 변수의 이해
. 연산자의 이해
. 배열의 이해 및 사용
★ 예제를 이해하여 함수와 언어에 대한 예약어의
다양한 사용 방법을 습득한다.
 직접 코드를 입력하고
 응용하여 프로그램을 변형한다.
생각해 볼까요?




1. 2002와 2006에 대하여 변수를 정의하고 +, -, /,
*, %를 수행하여 결과를 보이시오.
2. 웹 브라우저에 자신과 부모님의 이름, 나이, 주소를
출력하고 나이는 평균을 구하여 출력하시오.
3. 1년이 몇 초인지 계산하는 프로그래을 작성하시오.
4. 임의의 5명의 정보를 다음과 같은 구조로 배열로
저장하고 내용을 출력하시오.
이사람, 70, 80, 85
저사람, 89, 70, 86
…
1. PHP 기초



PHP는 서버 사이드 스크립트 언어
HTML 안이나 바깥에 사용 가능
실행될 때, 스크립트 소스를 볼 수 없다.
<?
echo “hello PHP world!”;
?>
<?php
echo “hello PHP world!”;
?>
<SCRIPT LANGUAGE=“PHP”>
echo “hello PHP world!”;
</SCRIPT>
1. PHP 기초

(cont’d)
echo()는 브라우저에 문자열을 출력하는 함수
Client
// echo.php
<?php
Server
echo “<P>test<P>test”;
echo “<hr>”;
echo (“hello world<P>”);
echo “<a href=aaa.htm>링크 </a><P>”;
echo “<a href=aaa2.htm>링크2 </a><P>”;
● echo “<a href=‘aaa.htm’>링크3 </a><P>”;
?>
“aaa.htm”을 사용할 수
<P> PHP 기초 테스트 <P> // HTML 없다.
\”aaa.htm\”은 가능
<?php
echo “마지막화면 출력”;
?>
1. PHP 기초

(cont’d)
설명 (comment)
//: 한 줄 설명
#: 한 줄 설명
/* … */ : 여러 줄 설명
● HTML의 경우 : <!-- …. -->

대소문자 구분
– 함수 이름과 키워드에 대해서는 구분하지 않음
– 변수 이름은 대소문자를 구분
1. PHP 기초

프로그래밍?
– 데이터

하나, 복수 (배열)
– 데이터 처리



데이터 입력/출력
데이터 처리 방법 (알고리즘)
프로그래밍의 생산성 향상?
– 함수 : 지역 데이터 + 처리
– 클래스 : 데이터 + 함수
(cont’d)
2. 변 수

변수(變數)란?
– 임시로 자료 값을 저장하는 저장 장소
– 그릇, 통장

PHP에서 변수
– 변수명은 대소문자 구분



$를 제외하고 알파벳이나 _가 변수명의 처음에 와야 한다.
$i, $com, $student, $_name
$family와 $Family는 다른 변수
2. 변 수

(cont’d)
변수형 (data type)
– 정수형, 실수형, 문자열형 등

따로 구분하지 않고 $만 붙인다.
– 정수형
– 실수형
– 문자열
<?php
$aaa = 131; // 10진수 정수
$hex = 0x10; // 16진수 정수
$var = 0.091;
$var = 91.0E-3;
$a = “Hello World~!”;
?>
2. 변 수

(cont’d)
변수의 데이터형 (data type)
– 정수형: -2,147,483,648 ~ 2,147,483,647
– 실수형: -1.7 E-308 ~ 1.7 E+308

범위를 벗어나면 자동으로 double형으로 변환
– 문자열: 작은 따옴표(‘)나 큰 따옴표(“)안에 표현
탈출문자(escape character)
의미
\n
새로운 라인
\t
탭 키 역할
\r
캐리지 리턴
\\
백 슬래쉬
\$
달러 표시
*단 탈출문자는 큰 따옴표 안에서 만 유효
– escape.php, data.php
2. 변 수

(cont’d)
변수의 종류
–
–
–
–
전역변수
지역변수
정적변수
유동변수
:
:
:
:
함수 외부에서 선언된 변수  global.php
함수 안에서 선언된 변수  local.php
한 번의 선언으로 기억공간이 확보된다.next sheet
변수를 지정하지 않아도 만들어 사용할 수 있음
●
●
<?php
$lang="php";
function test()
{
global $lang;
echo $lang;
}
test();
?>
●
●
<?php
$a=1;
function test(){
$a=5;
echo $a;
};
test();
?>
// static1.php
<?php
function test()
{
●
static $a = 1;
// 정적 변수
echo “$a & nbsp;”;
$a++;
}
function test2()
{
●
$a = 1;
// 지역 변수
echo “$a  ”;
$a++;
}
for ($i =1; $i < 10; $i++)
// test()와 test2()함수의 10번 호출
{
test();
test2();
}
?>
// 유동변수 선언  $youngmoo = “lee-young-moo”;
●
●
2. 변 수

(cont’d)
변수의 형(타입) 변환
– 타입의 강제 변환  cast.php
– 형 변환 연산자
연산자
의미
(int), (integer)
정수로 변환
(real), (double), (float)
실수로 변환
(string)
문자열로 변환
(array)
배열로 변환
– 타입의 자동 변환  cast2.php


크기가 작은 변수형이 큰 변수형으로 변환되어 연산
문자열은 수치형으로 변환
3. 연산자 (operators)

산술 연산자
예
의미
예
의미
$a + $b
더하기
$a and $b
둘 다 참일 경우, 참
$a - $b
빼기
$a or $b
하나라도 참일 경우, 참
$a * $b
곱하기
$a xor $b
둘 중에 하나만 참일 경우, 참
$a / $b
나누기
! $a
$a 가 거짓일 경우, 참
$a % $b
나머지
$a && $b
$a and $b와 동일
$a || $b
$a or $b와 동일
★ 참
★ 거짓

논리 연산자
: 비교 결과가 true, 또는 숫자는 0 이외의 값, 문자는 비어 있지 않을 때
: 비교 결과가 false, 또는 숫자 0, 문자는 비어 있을 때
문자열 연산: ” . ”
– 문자열 연결
$a = “hello”;
$b = $a.”World!”;
3. 연산자


(cont’d)
비교 연산자
예
의미
$a == $b
두 개의 값이 같으면 참
$a != $b
두 개의 값이 다르면 참
$a < $b
$b 값이 크면 참
$a > $b
$a 값이 크면 참
$a <= $b
$b 값이 크거나 같으면 참
$a >= $b
$a 값이 크거나 같으면 참
연산자 우선순위 :
– 연산자 중에서도 먼저 연산하는 순서가 존재
– pp.84 참고
4. 배열

C언어에서
int ahouse;
int apartment[100];
4. 배열

(cont’d)
PHP에서
– C언어와 유사함
– 여러 개의 데이터를 하나의 이름으로 관리
<?php
$array[]= 1;
$array[]= "사람들2";
$array[]= 3;
echo $array[0]."<P>";
echo $array[1]."<P>";
echo $array[2]."<P>";
?>
실행 결과로 알 수 있는 것은?
<?php
$array[2]="lee young moo";
$array[1]="Like LOVE";
$array[0]="lee seung yun";
echo $array[0]."<P>";
echo $array[1]."<P>";
echo $array[2]."<P>";
?>
<?php
$a["who"]="lee young moo";
$a["are"]="Play BaseBall";
echo $a["who"]."<br>";
echo $a["are"]."<br>";
echo (count($a));
?>
4. 배열

(cont’d)
PHP에서 배열의 특징
– 배열의 변수명은 ‘$’로 시작, ‘[ ]’로 종료
– ‘[ ]’안에 사용되는 색인(첨자)은 정수 또는 문자열을 사용

–
–
–
–
$array[3], $array[“lee”]
배열 변수의 첨자는 0부터 시작
선언이 없음, 값을 할당하면 자동으로 변수형이 결정
첨자 지정도 자동으로 증가
예제:


array1.php, array2.php
array3.php
4. 배열


(cont’d)
첨자의 사용: 정수 또는 문자열
배열에서 키(key)와 값(value)의 의미
>> 배열 days에서 key와 value의 의미 <<
key
value
0
1
2
3
“Sunday” “Monday” “Tuesday” “Wednesday”
>> 배열 color에서 key와 value의 의미 <<
key
“ext”
“trim”
value
“blue”
“black”
“fab”
“das”
“yellow” “hunter green”
4. 배열

(cont’d)
array()를 이용한 배열 값의 할당
<?php
● // 자동 첨자를 사용하는 경우
$person = array (“lee young moo”, “play soccor”, “so won ho”);
● // 첨자를 사용하는 경우
$person = array (“lee young moo”, 3 => “play soccor”, “so won ho”);
echo $person[0].“<P>”; // ‘.’의 의미를 잘 기억하시오.
echo $person[1].“<P>”; //  문자열 연결 연산자
echo $person[2].“<P>”;
?>
4. 배열

(cont’d)
list()와 foreach()
– 왜?

일반 변수와 다르게 값의 관리가 복잡하다.
– 배열을 조작하기 위한 함수
– 내부적으로 foreach()의 수행 속도가 빠르다.
4. 배열

(cont’d)
List()함수를 사용한 경우
// array7.php
<?php
// 키(첨자)를 사용하여 배열 생성
● $colors = array(“ext”=>”blue”,”trim”=>”black”,”fab”=>”yellow”,”das”=>”hunter green”);
reset($colors);
● while(list($key,$value) = each($colors))
{
print “$key: $value<BR>”;
}
?>
while 문과 같이
사용한 이유?
4. 배열

(cont’d)
List($key, $value)와 each($color)의 의미
“ext”
“trim”
“blue”
“black”
“fab”
“yellow” “hunter green”
each()
배열에서 현재의 키와 값 쌍을 반환하고
배열 커서를 전진시킨다
key = “ext”
value = “blue”
list()
변수에 목록화 한다
“das”
“ext”
“blue”
4. 배열

(cont’d)
foreach()함수
– while + list() + each()와 같은 기능
foreach($color as $key => $value)
foreach($color as $value) 로 사용할 수 있음
– 앞의 프로그램을 foreach()를 이용하여 표현하시오.
<?php
// 키(첨자)를 사용하여 배열 생성
$colors = array(“ext”=>”blue”,”trim”=>”black”,”fab”=>”yellow”,”das”=>”hunter green”);
reset($colors);
● foreach($color as $key => $value)
{
print “$key: $value<BR>”;
}
?>

foreach()를 이용한 다른 예제 1
<?php
$arr = array("one", "two", "three");
reset ($arr);
print "while 문 사용 : while (list(\$key, \$value) = each \$arr))<br>";
while (list($key, $value) = each ($arr)) {
echo "키값=> $key, 배열값: $value<br>\n";
}
print "<br>";
print "foreach 문 사용 : foreach (\$arr as \$value) <br>";
foreach ($arr as $value) {
echo "값: $value<br>\n";
}
?>
foreach()를 이용한 다른 예제 2

<?php
/* foreach example 1: 배열 값만 출력 */
$a = array (1, 2, 3, 17);
print " 배열값만 출력<br>";
print "배열: \$a = array (1,2,3,17), foreach문: foreach (\$a as \$v) , 출력: print \$a : \$v <br>";
foreach ($a as $v) {
print "\$a => $v<br>\n";
}
print "<br>";
/* foreach example 2: 키와 값 */
print "키값과, 배열값 출력<br>";
print " 배열: \$a = array (1,2,3,17), foreach문: foreach (\$a as \$k=>\$v) , 출력: print \$a[\$k] :
\$v <br>";
$a = array (1, 2, 3, 17);
foreach ($a as $k => $v) {
print "\$a[$k] => $v <br>\n";
}
?>

foreach()와 클래스 : 4장
– 클래스 안의 멤버 변수들을 배열과 같이 출력한다.
<?php
class person
{
var $firstName = "Joe";
var $lastName = "Bloggs";
var $age = "25";
}
$person = new person;
foreach ($person as $key=>$val)
{
echo "$key = $val\n";
}
?>
5. 배열 관련 함수
★★ http://kr.php.net/함수이름  kr.php.net/sort 
 print_r(), var_dump()
<!– print1.php -->
● <pre>
<?php
$a = array(“a”=>”사과”,”b”=>”바나나”,”c”=>array(‘x’,’y’,z’));
● print_r($a);
?>
● </pre>

void sort(array array [, int sort_flags])
– 배열값중에서 작은 것부터 정렬 sort1.php, sort2.php

void ksort (array array [, int sort_flags])
– 키 값으로 정렬 sort3.php

void asort (array array [, int sort_flags])
– 배열 값으로, 알파벳 순서에 따라 sort5.php

void unset(mixed var [, mixed var [, …]])
– 배열 값을 제거  sort6.php
비교

int array_push(array array, mixed var[, mixed …])
– 배열에 새로운 요소를 배열 끝에 추가 sort9.php

mixed array_pop (array array)
– 배열 끝의 구성 요소를 제거 sort10.php

bool in_array(mixed needle, array haystack [,bool
strict])
– 어떤 값이 배열 안에 존재하는지 검사 sort12.php

int sizeof(mixed var, [, int mode])
– count()와 같은 기능, 배열의 크기를 반환 sort13.php

array array_count_values(array input)
– 배열 안에 같은 값이 얼마나 나왔는지 수를 배열구조로 반환
– sort15.php

reset()
– 배열 포인터를 첫 번째 값으로 이동

next()
– 다음 포인터로 이동

current()
– 현재 포인터의 값을 의미

end()
– 배열의 끝 구성 요소로 이동  sort16.php
>> 실습 문제 <<

임의의 5명의 정보를 다음과 같은 구조로 배열로 저장
하고 내용을 출력하시오.
이동자, 70, 80, 85
백민진, 89, 70, 86
황승주, 88, 5, 0
김제명, 90, 98, 100
신숭규, 100, 40,
 배열 구조 출력
 각 과목에 대한 평균 출력
 각 학생에 대한 총합 출력
 이름에 대하여 정렬(오름차순)
 총합에 대하여 정렬
+------+------+--------+------+--------------+------------+
| name
owner
species
sex
birth
death
+------+------+--------+------+--------------+------------+
| Fluffy
Harold
cat
f
1993-02-04
NULL
| Claws
Gwen
cat
m
1994-03-17
NULL
| Buffy
Harold
dog
f
1989-05-13
NULL
| Fang
Benny
dog
m
1990-08-27
NULL
| Bowser Diane
dog
m
1979-08-31
1995-07-29
| Chirpy
Gwen
bird
f
1998-09-11
NULL
| Whistler Gwen
bird
NULL
1997-12-09
NULL
| Slim
snake
m
1996-04-29
NULL
hamster
f
1999-03-30
NULL
Benny
| Puffball Diane
+------+------+--------+------+--------------+------------+
다차원 배열

C언어에서
score[0][0] score[0][1] score[0][2] score[0][3]
score[1][0] score[1][1] score[1][2] score[1][3]
다차원 배열
●
2차원 배열은 print()나
echo() 함수 안의 따옴표
안에서 출력하려면 괄호를
사용해야 한다.
●
●
●
●
●
●
●