반응형

프로그래밍의 기본 중의 기본인 값, 변수, 배열 및 문법에 대해서 설명한다.


PHP 값과 변수

그럼 이전에 예제를 더 수정하도록 하겠다. 아래와 같이 작성하여 브라우저에서 접속해 보자.

<?php
    $price = 12300;
    $total = $price * 1.05;
?>
<!DOCTYPE html>
<html lang="ko">
    <head> 
        <meta http-equiv="Content-Type"
            content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <div>
            <?php echo "금액:" . $total . "원"; ?>
        </div>
    </body>
</html>

이번에는 "금액 : 12915원."라는 텍스트가 된다. 이것은 12300원에 소비세 5%를 더한 금액을 계산하여 표시하고 있는 것이다.

소스 코드가 짧지만, 여러가지 PHP의 특징이 보인다. 대충 정리해 보겠다.

1. 스크립트는 여러개로 나누어 쓸 수 있다.

여기에서는 맨 처음 부분에 계산을 하는 <?php ?> 태그와 HTML의 body에 결과를 표시하는 <?php ?> 태그가 있다. 이런 방식으로, PHP 스크립트는 하나의 페이지에 몇 군데도 쓸 수 있다.

매우 흥미로는 것은 몇개를 써도 "모두 하나의 스크립트로 인식된다"는 점이다. 예를 들어 여기에서는 첫 번째 태그에서 계산을 하고 두 번째 태그에서 그 결과를 표시하고 있다. 즉, 첫 번째 부분의 변수가 두 번째 부분에서 그대로 사용할 수 있다. PHP 스크립트는 이렇게 몇 나눠 써도 하나의 것으로 취급된.

2. 변수 "$"를 붙여서 쓴다

여기에서는 값을 '변수'에 담아 제공하고 있다. 변수라는 것은 값을 임시로 보관할 수있는 '용기'이다. PHP에서 변수는 "$변수명"와 같인 쓴다. 반드시 앞에 달러($) 기호를 붙이는 것을 잊지 말자.

변수의 이름은 기본적으로 영숫자와 밑줄 기호의 조합해서 작성한다. 단, 첫 번째 문자는 숫자는 사용할 수 없기 때문에 주의하자.

3. 숫자는 그대로, 텍스트는 큰 따옴표을 붙인다.

PHP에서는 다양한 값이 사용된다. 수치는 기본적으로 그대로 숫자를 적으면 된다. 또한 텍스트는 반드시 앞뒤에 따옴표( " 또는 ') 기호를 붙인다. 여기서는 큰 따옴표 (") 기호를 사용하여 쓰고 있다.

4. 값은 등호로 변수에 할당한다.

값을 변수에 넣을 때는 등호를 사용한다. 등호는 "우변의 값을 좌변의 변수에 넣는 역할"을 한다. 등호 이외에도 대체를위한 기호는 여러 가지 있지만, 우선 등호만 기억해두록 하자.

5. 숫자의 사칙 연산과 텍스트의 결합한다.

계산을 할 시에는 숫자 키패드의 사칙 연산 기호를 그대로 사용할 수 있다. "+ - * /"와 같은 기호이다. 이것을 사용하여 "1 + 2 - 3"와 같은 식으로, 일반적인 식을 쓸 수 있다. 등호로 오른쪽에 식을 쓰면 그 식을 계산한 결과가 좌변의 변수에 저장된다. 그 밖에 '%'라는 기호 있다. 이것은 "나눗셈을 한 후에 나머지"를 계산하는 기호이다.

또한 텍스트의 연산을 하는 기호도 있다. 이것은 도트(.) 기호로,이를 사용하여 텍스트를 하나에 연결할 수 있다. ["A"."B"] 이렇게 하면, "AB"라는 텍스트가 된다.

 

우선, "값 및 변수"에 관한 기본, 여기에 대충 이해해 두자. 이는 스크립트를 작성할 때의 "기본 중의 기본"이라고도 할 수 있다.



배열

숫자나 텍스트 같은 값을 저장 변수는 기본적으로 "하나의 변수에 하나의 값"밖에 저장할 수 없다. 하지만 많은 데이터를 처리해야 하는 경우에는 하나 하나의 데이터를 모두 별도의 변수에 넣는 것은 상당히 복잡하고 관리하기도 힘들다. 더 쉽게 많은 데이터를 처리할 방법을 필요하다.

이러한 때에 사용되는 것이 "배열"과 "연관 배열"이다. 이는 많은 값을 한꺼번에 처리할 수 있는 특별한 변수이다. 하나의 배열에 값을 보관할 수 있는 용기가 많이 준비되어 있으며, 각각 다른 값을 넣을 수 있다.

배열은 숫자(정수)를 사용하여 값을 관리하는 변수이다. 이는 다음과 같은 형태로 만든다.

$변수 = array(값1, 값2, ...);

이렇게 ()에 지정한 값이 모든 배열 안에 저장된다. 이들은 0부터 순서대로 0,1,2 ...... 식으로 번호가 매겨진다(이 번호를 인덱스라고 한다). 배열에서 값을 꺼내거나 배열의 특정 요소에 값을 설정할 때 이 인덱스 번호를 지정한다.

$변수 = $ 배열[인덱스];
$배열[인덱스] = 값;

위와 같이 한다면 배열에서 특정 값을 꺼내거나 또는 값을 변경할 수 있다.

연관 배열

또 다른 하나인 연관 배열도 배열과 같은 다수의 값을 관리 할 수 있다. 배열과 다른 점은 각각의 값을 인덱스의 번호가 아닌 '키'라는 이름으로 관리한다. 이 연관 배열은 다음과 같이 작성한다.

$변수 = array (키1 => 값1, 키2 => 값2, ...);

보면 알 수 있듯이, 키와 거기에 설정 값을 =>이라는 기호로 연결하여 작성하고 있다. 이렇게 생성된 연관 배열의 값은 다음과 같은 형태로 사용할 수 있다.

$변수 = $연관배열[키];
$연관배열[키] = 값;

이렇게 해서 지정된 키의 값을 주고 받을 수 있다. 키는 정확히 이름과 동일하지 않으면 값을 꺼낼 수 없기 때문에 주의해야 한다.

이 배열과 연관 배열은 나중에 등장하는 '반복 구문 "라는 것을 이용하게 되면 그 편리함 알게 될 것이다. 일단 지금은 "이런 것이 있다"라고만 기억해 두면 충분하다.



문법

HTML 벗어나기

HTML 문서에서 PHP 코드라고 명시한 부분은 PHP가 해석합니다. PHP 코드라고 명시하는 방법은 여러 가지가 있습니다.

방법 1

<?php와 ?> 사이의 내용을 PHP가 해석합니다.

<?php
  // PHP Code
?>

어떤 상황에서도 사용할 수 있는 가장 일반적인 방법입니다.

방법 2

스크립트 태그를 이용하는 방법입니다.

<script language="php">
  // PHP Code
</script>

기타

php.ini에서 설정을 하면 다음과 같은 형식도 사용할 수 있습니다. 권장되는 방식은 아닙니다.

<?
  // PHP Code
?>
<%
  // PHP Code
%>

명령 구분하기

여러 개의 명령을 넣을 때는 세미콜론(;)으로 구분해줍니다.

<?php
  echo 'Lorem';
  echo 'Ipsum';
?>

마지막 명령에는 세미콜론을 넣지 않아도 됩니다.

<?php
  echo 'Lorem';
  echo 'Ipsum'
?>

문서의 마지막에 있는 PHP 코드라면 ?>를 생략할 수 있습니다.

<?php
  echo 'Lorem';
  echo 'Ipsum';

주석

한 줄 주석

한 줄 주석은 // 또는 #으로 만듭니다. // 또는 # 뒤의 내용이 주석이 됩니다. 줄바꿈이 되면 주석 효과는 사라집니다.

// comment

여러 줄 주석

여러 줄 주석은 /*와 /로 만듭니다. /와 */ 사이의 내용이 주석이 됩니다.

/* comment
   comment */

예제

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Comment</title>
  </head>
  <body>
    <?php
      echo '<h1>Lorem</h1>'; // 한 줄 주석
      echo '<h1>Ipsum</h1>'; # 한 줄 주석
      /* 여러 줄 주석
         여러 줄 주석 */
      echo '<h1>Dolor</h1>';
    ?>
  </body>
</html>


반응형

'php' 카테고리의 다른 글

[php] 텍스트 파일 이용  (0) 2017.12.09
[php] form 전송 기본  (0) 2017.12.09
[php] 제어 구문  (0) 2017.12.09
[php] 산술 연산자  (0) 2017.12.09
[php] 값, 변수, 배열 및 문법  (0) 2017.12.09
[php] 서버 준비  (0) 2017.12.09

+ Recent posts