공부블로그

PHP 문법 본문

공부하기

PHP 문법

떠어영 2023. 3. 12. 23:39

기초문법

php코드는 웹 페이지의 어느 부분에나 위치할 수 있다.
php파서가 php코드를 인식하기 위해 시작과 끝을 알려줘야 한다.<? php … ?>

즉, <?= …?> 은 출력용 태그라고 생각하자
마지막 ; (세미콜론)
주석 : //

 

출력

echo - 문자열 여러개 출력, 리턴값 X / print - 함수처럼 사용, 문자열 하나 출력, 항상 리턴값 1

 

변수

  • 지역 변수 : 함수 내부에서 선언된 변수는 오직 함수 내부에서만 접근, 함수 호출이 종료되면 메모리에서 제거되므로 함수 밖에서 접근 불가
  • 전역 변수 : 함수 밖에서 선언, 접근 함수 내부에서 전역 변수를 사용하고 싶다면 global키워드를 사용
  • 정적 변수 : 함수의 호출이 종료되더라도 메모리 상에서 사라지지 않으므로 생성과 소멸을 반복하지 않고 함수 안에서 값이 공유된다.

+ $GLOBALS[index] 배열 : php는 모든 전역 변수를 $GLOBALS배열에 저장
   전역 변수의 이름을 사용하면 해당 전역 변수의 값에 접근 가능


- define(상수이름, 상숫값, 대소문자구분안함) / 기본값 false
- 마법 상수 : 용도가 변경되는 8개의 마법 상수


기본 타입

  • boolean : false로 인식되는 값 : 정수 0, 실수 0.0, 빈 문자열과 문자열 ‘0’, 빈 배열, Null
  • 정수 integer
  • 실수 float : 최대 범위를 넘으면 INF
  • 문자열 string : “ 또는 ‘로 감싸서 표현 / strlen()는 문자열 길이 반환
  • 배열 array : 한 쌍의 키와 값으로 이루어진 맵으로 구성되는 순서가 있는 집합, 키값으로 정수와 문자열만 가능하고 하나의 배열의 두 가지 키값을 사용 가능

만약 정수와 문자열 이외에 다른 타입의 값을 키값으로 사용하면, 내부적으로 다음과 같이 타입 변환

  • 불리언은 true는 1로, false는 0으로 자동 타입 변환됩니다.
  • 유효한 숫자로만 이루어진 문자열은 정수나 실수로 자동 타입 변환됩니다.
  • 실수는 소수 부분이 제거되고, 정수로 자동 타입 변환됩니다.
  • NULL은 빈 문자열("")로 자동 타입 변환됩니다.
  • 배열과 객체는 배열의 키값으로 사용할 수 없습니다.
  • 같은 키값으로 맵을 선언하면 맨 마지막에 선언된 값만 저장

 

  • 객체 object : 클래스의 인스턴스를 저장하기 위한 타입 / 프로퍼티와 메소드를 포함한다.

       - 리소스 resource

       - NULL : 아직 어떠한 값도 대입되지 않은 변수


화살표의 의미? -> 와 => 의 차이점

-> : 객체 범위 내에서 객체에 접근하기 위해 사용

=> : 배열의 키, 값을 할당할 때 사용

<?php
 
$arr1 = array("key1"=>"value1", "key2"=>"value2"); // 키 => 값
 
echo arr1["key1"]; // value1
echo arr1["key2"]; // value2
 
$obj = (object)$arr1; // array를 object로 형변환하여 사용
 
echo obj -> key1; // value1
echo obj -> key2; // value2

?>


타입 변환 

- var_dump 함수 : 변수의 정보를 출력한다. 
예시 결과값 ) int(1) : 정수이고, 값은 1입니다.
          array(2) { [0]=> int(1) [1]=> float(1.1) } : 2개의 값을 가진 배열이고, 첫번째 값은 정수 1, 두번째 값은 실수 1.1입니다.
- 자동 타입 변환 : php는 대입하는 값에 따라 타입이 자동으로 결정됨 (동적 타입)
- 강제 타입 변환 : 타입캐스트 연산자 () 사용 ex) $var_02 = (boolean)$var_01
- 가변 변수 variable variables : 변수의 이름도 동적으로 변경, 해당 변수의 값을 또 다른 변수의 이름으로 취급한다. 
    ex) $PHP = “HTML”; $HTML = “CSS”
          echo $PHP; // HTML
          echo $$PHP; // → echo $HTML → CSS

연산자 


산술 연산자 : +(덧셈) -(뺄셈) *(곱셈)  /(나누기) %(나머지값) 

조건문


if( ) {
 }
elseif( ){
 }
else { //한문장만 실행하면 중괄호 생략가능
 }

 

배열

 배열의 요소 : 맵

- 1차 배열 선언방법 : $배열 이름 = array() / []
- 배열 요소 참조 : $배열이름[인덱스]
- 요소 추가 : $arr[0] = “apple”;
- 배열 생성과 동시에 초기화 : $arr = array("apple", "banana", "orange");

- 배열의 홀(hole)
    php에서는 배열의 특정 인덱스에만 배열 요소를 추가할 수 있다. 
    $arr = array();
    $arr[10] = “banan”; // index 0 ~ 9까지는 다 null (= 배열의 hole)
    var_dump(isset($arr[0])); // NULL

    count()함수를 사용한 for문에서는 배열의 hole을 포함하지 않아서 정확한 배열의 길이를 구할 수 없다.
    따라서 정확한 배열에 접근하고 싶을 때는 forEach문을 사용한다.

연관 배열
배열의 인덱스를 정수뿐만이 아닌 다양한 타입으로 설정한 배열

- 배열 생성 및 초기화 : $배열이름 = array("키1" => 값1, "키2" => 값2, ...); / ["키1" => 값1, "키2" => 값2, ...]
  배열 요소 추가 시, 해당 배열이 존재하지 않으면 생성한 후에 요소가 추가된다.

- 루프를 이용한 연관 배열로의 접근 (인덱스가 숫자가 아니므로 for문을 사용하여 접근X) 

$array = array("apple" => 1000, "banana" => 2000, "orange" => 1500);


    • foreach문 : 요소의 키값과 요소의 값을 변수에 따로 저장하여 루프 내에서 사용

 foreach($array as $key => $value){ echo $key.” ”.$value”<br>”; }


   • each( )함수 사용 : 배열 커서가 현재 가리키고 있는 배열 요소를 반환하고, 다음 배열 요소를 가리키도록 한다. 가리키는 요소의 다음 요소가 배열의 마지막이면 동작X

while($element = each($array)) { echo $element['key']." ".$element['value']."<br>"; }


함수

- 선언방법 : function 함수이름( 매개변수1, 매개변수2,... ) { 함수가 호출 되었을 때 실행될 코드; }
( 함수 이름은 대소문자 구분하지 않는다. 문자와 숫자, _만 사용가능 )

- 호출 : 모든 함수와 클래스는 전역 범위를 가진다. 

- 값 반환 : 반환값을 원하는 타입으로 반환받을 수 있도록, 반환값의 타입을 지정할 수 있고 그 강도도 정할 수 있다.
- 약한 강도 : function sum($x, $y) : float // 반환값의 타입을 float 타입으로 설정함. { return $x + $y; }
- 강한 강도 : declare(strict_types = 1);   // strict 모드로 설정함.


Form 처리 


HTML form 요소가 전송한 데이터를 처리하기 위해 서버 사이드 스크립트 언어인 PHP를 사용한다.

<html>
<body> <!—action 속성값에는 form 요소를 처리할 서버의 PHP 스크립트 파일 주소를 명시—>
    <form action="request.php" method="post">
        이름 : <input type="text" name="name"><br>       → $name = $_POST["name"];
        이메일 : <input type="text" name="email"><br> $email = $_POST[“email”];
        <input type="submit">
    </form>
</body>
</html>


+ $_REQUEST : an associative array that by default contains the contents of $_GET, $_POST and $_COOKIE.