요기보드3   필수기초 선택과목 요기보드 그누보드 로그인

P H P


변수와 배열, 함수

▶ 변수(Variable)
php뿐만 아니라 모든 프로그램 언어에는 '변수' 라는 아주 중요한 개념이 있어.
변수란 임시로 문자나 숫자 등을 저장하는 장소의 이름인데 [$변수명] 형식으로 사용해.
변수명을 정할 때 주의할 점은 변수명은 모두 [소문자]를 사용하라는 거야.
대문자를 사용할 수도 있지만 php의 변수는 대문자와 소문자를 구분해. 즉, $a와 $A는 다른 변수인 거지.
대부분 영문 소문자와 숫자, 그리고 언더바(_)만 사용하는 게 일반적이야. 변수 이름을 정할 때 규칙 꼭 기억해 두자고..

  1. 변수는 $ 기호로 시작
  2. 변수명은 영문, 숫자, _ 3개만 사용
  3. 변수명 첫 글자는 꼭 영문으로
예를 들어 다음 php 문장은 변수를 사용해서 만들어 본 거야.


<?php
  $a = "<h1>요기보드와 함께 멋진 홈피를…</h1>";
  echo $a;
?>

결과:
요기보드와 함께 멋진 홈피를…

$a라는 변수에 "<h1>요기보드와 함께 멋진 홈피를…</h1>"이라는 내용을 저장하고 있다가 두 번째 echo 명령으로 변수 $a의 내용을 출력하는 것이지.
문장 앞뒤에 Html의 <h1> 태그가 있으니 큰 제목 글씨로 출력해 주겠지?

이번에는 다음과 같이 입력하고 브라우저에서 실행을 해 봐.
echo에서 하나는 따옴표(')로 감싸고, 다른 하나는 쌍따옴표(")로 감쌌어.


<?php
  $a = '홍길동' ;
  echo '나는 $a 입니다.<br>' ;
  echo "나는 $a 입니다.\n" ;
?>

결과 :
나는 $a 입니다.
나는 홍길동 입니다.

결과를 보면 따옴표(')로 감싸면 $a로 보이고, 쌍따옴표(")로 감싼 것은 변수값 ‘홍길동’으로 변환되어 출력된 것을 볼 수 있어.
앞서 따옴표와 쌍따옴표에 작은 차이가 있다고 했는데 바로 이 차이야.
따옴표로 쌓인 문장은 문장 그대로 출력하고, 쌍따옴표 내의 변수는 변수값으로 변환되어 출력돼.
그런데 만약 따옴표 안의 문장에서 따옴표가 필요하면 어떻게 해야 할까?
이때는 \ 문자를 앞에 두면 돼. 예를 들어 He's home이라는 문장을 따옴표 안에 넣으려면..


echo 'He\'s home' ;

이렇게 '를 \'로 입력해 주면 화면에는 '만 출력해. 쌍따옴표 안에 쌍따옴표(") 사용도 마찬가지야.
이렇게 문장 안에 쓰이는 특수기호를 ‘이스케이프(Escape) 문자’라고 불러.
그럼 만일 따옴표나 쌍따옴표 안에 \ 문자를 사용하려면? 이때는 \\로 2개 입력하면 돼.
위 두 번째 echo 문의 맨 뒤에 \n은 줄 바꿈 기호로 역시 이스케이프 문자야. 첫 번째 문장의 <br>과 같은 역할을 해. 단, 이 \n는 쌍따옴표 안에서만 작동해.
따옴표 문장 내에서 사용할 수 있는 이스케이프 문자는 \'와 \\ 딱 2개야.

앞으로 사용할 때 둘 중 어느 것을 사용할지는 출력내용이 무엇인지에 따라 결정하면 되겠지?
문장에 변수나 따옴표가 들어가면 쌍따옴표로 감싸면 돼. 따옴표는 보통 단순한 단어나 값을 사용할 때 사용하면 되겠지?

이 변수는 위의 예처럼 문자만 저장하는 것이 아니라 숫자 계산을 위해서도 사용돼. 예를 들어 다음과 같이 계산 용도로 사용할 수도 있어.


<?php
  $a = 1;
  $b = 2;
  echo $a + $b;
?>

결과는 당연히 3이라는 계산결과가 출력될 거야.
이렇게 변수는 문자, 숫자뿐 아니라 다른 프로그램의 결과값 등… 아주 다양한 용도로 사용돼.
심지어 이 변수 하나에 웹페이지의 모든 Html 내용이 다 들어갈 수도 있어.
이 변수라는 기능을 잘 활용하면 엄청나게 다양한 작업을 할 수 있어.
비단 PHP뿐만 아니라 모든 프로그램 언어의 절반 이상이 변수로 이루어져 있다고 해도 과언이 아니야.

▶ 배열(Array)
‘배열’은 변수의 일종인데 좀 특수한 변수야. 그래서 배열(Array), 또는 배열변수라고 불러서 구분해.
일반적으로 변수에는 1개의 값이 들어가는데, 배열에는 변수이름 하나에 여러 개의 값이 들어갈 수 있어.
서랍이 많은 서랍장이라고 비유할까? 이름은 서랍장인데 첫 번째 서랍에는 모자가 들어있고, 두 번째 서랍에는 장갑, 세 번째에는 구두가 들어 있는 걸 상상해 봐.
이름은 서랍장인데 이 서랍장에는 많은 값(모자, 장갑, 구두)이 들어 있는 거야.
일반적인 배열 변수를 만드는 방법은 다음과 같아.
$변수 = array(); // 일단 배열 변수 이름만 선언
$변수[0] = '값1';
$변수[1] = '값2';

또는 다음과 같이 만들 수도 있어.

$변수 = array();
$변수 = ['값1', '값2'…]

또는 다음과 같이 변수를 만들면서 값까지 넣을 수도 있어.

$변수명 = array('값1' ,'값2' ,'값3');

예를 들어 설명한 서랍장 이름을 a라고 한다면 내용은 아래와 같이 쓸 수 있겠지?

$a = array('모자', '장갑', '구두')

이 변수의 내용을 꺼내 쓸 때는 아래와 같이 순차적으로 불러 쓸 수 있어.
echo $a[0] ; // 모자
echo $a[1] ; // 장갑
echo $a[2] ; // 구두
여기서 잠깐!
php를 포함한 대부분의 컴퓨터 언어에서 순서는 1부터 시작하지 않고 0부터 시작해.
첫 번째는 0, 두 번째는 1, 세 번째는 2… 이렇게 순서가 진행돼.
처음 컴퓨터 언어에 접할 때 많이 실수하는 부분 중 하나야. 누가 처음 순서를 이렇게 정했는지 모르겠지만 나도 그 사람 참 미워…. ㅠ
1부터 시작하는 언어들도 있지만, 여하튼 php에서는 0부터 시작이야. 잘 기억해 둬.

위의 예에서 2번째 ‘장갑’을 ‘속옷’으로 바꾸려면 변수의 순번을 이용하면 되겠지?

$a[1] = '속옷';

이 배열은 php에서 변수만큼이나 중요하게 많이 사용돼.
또 배열의 생성 방법이나 응용방법도 지금 설명한 것보다 훨씬 다양해. 차츰 익숙해지기로 하고 우선 배열이라는 특수한 형태의 변수도 있다는 것만 알아두자고.

▶ 함수
앞서 배운 문장들에서 echo는 문장이나 변수내용, 계산결과를 화면에 보내는 기능을 해.
이렇게 어떤 기능을 수행하는 명령을 php에서는 보통 ‘함수’라고 불러.
마치 Html의 명령을 ‘태그’로 부르는 것과 마찬가지야.
다른 언어에서는 명령과 함수의 의미가 다른 경우도 있기는 한데, php 에서는 그냥 모두 ‘함수’라는 표현을 더 많이 사용해.
나도 앞으로 php의 명령들을 ‘함수’로 사용할게.

이 echo 이외에도 php에는 수백(수천?) 개의 함수들이 있어.
예를 들면 date()는 오늘 날짜를 알려 주는 함수이고, substr()는 문장 중에서 몇 글자만 빼내는 역할을, rand()는 랜덤한 임의 숫자를 만들어 주는 함수, copy()는 파일을 복사해 주는 역할 등등 수많은 기능이 있어. 몇 가지 사용법만 볼까?

아래와 같은 문장을 c.php라는 파일에 넣고 브라우저에서 한 번 실행해 봐….


<?php
  $a = date("y/m/d");
  $b = substr("abcdefg",3,2);
  $c = rand(1,46);
  $d = filesize("a.php");

  echo "오늘은 $a 입니다.</br>";
  echo "abcdefg의 3번 뒤의 2글자는 $b  입니다.</br>";
  echo "마지막 로또번호는 $c 입니다.</br>";
  echo "a.php파일의 크기는 $d  byte 입니다.</br>";
?>

결과:
오늘은 19/03/23입니다.
abcdefg의 3번 뒤의 2글자는 de입니다.
마지막 로또번호는 20입니다.
a.php파일의 크기는 1675byte입니다.

각 함수의 결과값을 $a, $b, $c, $d라는 각각의 변수에 넣어 두고 echo 명령으로 화면에 출력한 것이야.
물론 변수를 사용하지 않고 출력되는 자리에 함수를 넣는 방법도 있지만 이와 같이 변수를 사용하면 훨씬 더 보기에도 깔끔하고, 입력하기도 훨씬 더 편해.

date()는 오늘 날짜를 계산해 주는 함수로 () 안에 년(y)월(m)일(d)을 인자로 넣어 주면 돼.
substr()은 문자열이나 문장에서 특정문자만 꺼내는 함수야.
인자로 3, 4를 주면 3번 뒤부터 4글자를 가져오는 거지. 만일 substr("abcdefg",3) 이렇게 두 번째 인수를 사용하지 않으면 3번 뒤쪽의 모든 문자를 다 가져와.
rand()는 인자로 지정한 구간에서 임의의 숫자를 아무거나 뽑아 오는 함수야. 인자를 (1, 46)으로 주었으니 이 사이의 값만 가져올 거야.
filesize()는 파일의 크기를 구하는 함수야. 실제 우리들이 따라 하며 만들었던 a.php라는 파일사이즈를 구해 줘.

이제 함수가 뭔지 알겠지?
PHP에는 이것 이외에도 엄청나게 많은 함수가 있어.
또 위에서와 같이 기본으로 제공하는 함수 이외에 사용자가 직접 함수를 만들 수도 있어.
자주 사용하는 여러 줄로 된 php 문장들을 myfunc()같이 내가 이름을 붙여서 사용할 수도 있다는 거지….
그런데 그걸 다 여기서 설명할 수는 없어. 그러면 php 책이 되어 버리잖아? 우리의 목표는 요기보드가 어떻게 동작하는지 이해하는 것이야.
나중에 php에서 사용할 수 있는 모든 함수들이 잘 정리된 사이트를 알려 줄게.

목차제 목조회
130
132
127
114
151
106
111
99
102
107
115
122
112
117