일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BANDiT
- php 로그인 페이지 만들기
- file upload
- php To Do List
- ssrf
- active recon
- OS Command Injection
- SQLi
- php
- access control
- php file upload
- Server Side Request Forgery
- 파일 업로드 취약점
- overthewire
- Reconnaissance
- sql injection
- Cookie
- php login page
- active reconnaissance
- Cryptography
- FTZ
- Leviathan
- php 파일 업로드하기
- tryhackme
- THM
- over the wire
- privilege escalation
- Authentication
- Recon
- War Game
- Today
- Total
R's Hacking Daily Log
php 데이터 타입 본문
Step 1 :: 정수형 [ Integer ]
제일 먼저 살펴볼 데이터 타입은 정수형이다.
말 그대로 수학적인 의미에서의 "정수"를 저장하는 데이터 타입을 얘기한다.
운영체제가 몇 bit인지에 따라 저장할 수 있는 정수의 크기가 달라질 수 있다.
<?php
echo PHP_INT_MAX;
자신의 운영체제에서 정수의 최대 크기를 확인해보고 싶다면 PHP_INT_MAX 값을 출력해 보면 된다.
보통 정수형 데이터라고 하면 10진법 정수를 생각하지만 정수형 데이터 타입으로는
echo -123;
echo 0377;
echo 0xFF;
echo 0b11111111;
양수, 음수에 더불어 2진수, 8진수, 16진수 형태의 정수도 나타낼 수 있다.
Step 2 :: 실수형 [ Float ]
실수를 저장하는 데이터 타입을 실수형이라고 한다.
실수형도 정수형과 비슷하게 운영체제에 따라 최대 범위가 달라진다.
다만 1/3처럼 0.3333333.. 끝없이 나눠지는 수 같은 경우에는 중간에서 값을 끊을 수 밖에 없기 때문에
오차 범위를 고려해줘야한다.
<?php
echo 1.234;
echo 1.2e3;
echo 7E-10;
Step 3 :: 논리형 [ Boolean ]
논리형은 참 True & 거짓 False 값만 가지는 데이터 타입이다.
보통 참은 정수 1로, 거짓은 0으로 표현된다.
논리형은 데이터 타입에 따라서 자동으로 변환이 가능한데
정수 0, 실수 0.0, 문자열 "" or "0", 빈 배열, NULL은 false가 되고 나머지 경우는 모두 true로 취급한다.
Step 4 :: 문자열 [ String ]
문자열 타입은 문자들의 나열로 글자 하나하나가 연결된 문자들을 나타낸다.
PHP에서는 문자열을 바이트로 처리하기 때문에 문자열을 지정하는 범위의 제한이 없다.
(32bit 운영 체제에서는 존재함)
문자열을 만들기 위해서는 작은따옴표 or 큰 따옴표로 감싸주면 된다.
만약 문자열 안에서 따옴표를 사용하고 싶다면 escape sequence(이스케이프 문자)를 붙여주면 된다.
<?php
echo '작은 따옴표<br/>';
echo "큰 따옴표<br/>";
echo '작은 따옴표 안에 \' 작은 따옴표<br/>';
echo "큰 따옴표 안에 \" 큰 따옴표<br/>";
문자열 안에서 특별한 기능을 수행하기 위해서 사용하는 이스케이프 문자는 역 슬래쉬 " \ "로
대표적인 예시는 줄바꿈을 위한 " \n "이 있다.
Step 5 :: 배열 [ Array ]
배열은 여러 요소들을 묶어서 하나의 자료형에 넣어둔 형태로
요소를 추가, 삭제, 수정하는 것이 가능한 가변형 객체 데이터 타입이다.
배열 안에는 서로 다른 타입의 값들을 넣을 수 있고, 배열 안에 배열을 넣는 2차원 배열도 가능하다.
배열을 만들기 위해서는 기본적인 방법 & 축약형이 존재한다.
<?php
$a = array("apple", 5, "banana", 1.234);
$b = ["apple", 5, "banana", 1.234];
변수 a에 배열을 할당하기 위해 array()를 이용하여 요소들을 넣어줄 수도 있고
array()를 생략하고 " [ ] "로 요소들을 감싸 만들 수도 있다.
변수 b를 만드는 방식을 축약형이라고 부른다.
<?php
$a = array('가','나','다','라');
echo $a[0];
echo $a[1];
echo $a[2];
echo $a[3];
배열 안에 있는 요소에 접근하기 위해서는 인덱스(index)를 사용해야 한다.
인덱스는 기본적으로 0부터 시작하는 값이기 때문에 0 ~ [ 배열 크기 - 1 ]까지의 범위를 갖는다.
따라서 인덱스 0은 '가'를 나타내고 1은 '나', 2는 '다', 3은 '라'를 가리키게 된다.
(+) 연관 배열
연관 배열은 값을 할당하는 데 키 key를 사용하는 배열을 말한다.
앞서 본 내용에 따르면 배열 안에 있는 요소에 접근하기 위해서는 인덱스를 사용할 수 있다고 했는데
연관 배열은 인덱스 대신 키를 사용한다.
<?php
$a = array(
"key1" => '가',
"key2" => '나',
"key3" => '다',
"key4" => '라',
);
echo $a['key3'];
echo $a['key2'];
echo $a['key1'];
코드를 보면 [ 가, 나, 다, 라 ]를 배열의 요소로 넣는 데 앞에 "key" => 가 붙어있는 걸 볼 수 있다.
key1이라는 키는 요소 '가'를 가리킨다!로 생각하면 쉬울 것이다. 그렇기 때문에 '가'라는 값을 참조하기 위해서는
key1을 인덱스 값으로 넣어주면 되는 것이다.
Step 6 :: 객체형 [ Object ]
객체 지향 프로그래밍에서 말하는 그 객체이다.
보통 객체라고 하면 클래스를 만들고 그 클래스 형으로 생성한 인스턴스를 의미한다.
<?php
class MyClass {}
$my_class = new MyClass();
var_dump($my_class);
내용을 작성하진 않았지만 MyClass라는 클래스를 만들어놨다고 가정했을 때
이 클래스 형의 인스턴스를 생성하기 위해서는 new keyword를 사용하면 된다.
MyClass라는 클래스 형의 인스턴스를 만드는 셈인데 이때 만들어진 인스턴스 $my_class를 객체라고 할 수 있다.
변수의 정보를 출력하는 함수 var_dump()를 사용해 my_class 변수의 타입을 출력해 보면 Object인 걸 확인할 수 있다.
Step 7 :: NULL
null은 하나의 값만 가지는 특수 데이터 유형이다.
변수를 선언할 때 값을 할당하지 않았다면 기본적으로 null이 들어가게 된다.
null이라는 의미를 확실히 이해할 필요가 있는 게 0은 말 그대로 0이라는 값이 들어가는 거고
empty는 그 어떤 값도 없이 비어있는 상태를 말하는 것이다.
이와 달리 null은 0이나 empty가 아닌 어떤 값이 들어갈 지 아직 확실하지 않은 상태를 의미한다.
할당된 값은 아직 없는 데 그렇다고 비어있는 건 아니라는 말이다.
변수를 선언만 해둔 상황을 상상해보면
"값 넣을 거야. 넣을 건데.. 그 값이 정확히 뭔지 몰라. 값이 없는 게 아니라 아직 안 넣은 거야!!" 같은 느낌인 것이다.
그렇다 보니 값을 할당하지 않은 str3도 var_dump()로 확인해 보면 NULL이 결과로 나오는 걸 볼 수 있다.
'PHP' 카테고리의 다른 글
php 연산자 다루기 (2) (0) | 2023.07.02 |
---|---|
php 연산자 다루기 (1) (1) | 2023.07.01 |
php 상수 다루기 (0) | 2023.06.30 |
php 변수 다루기 (2) (0) | 2023.06.29 |
php 변수 다루기 (1) (0) | 2023.06.29 |