정상우
hELLO.
정상우
전체 방문자
384,472
오늘
91
어제
1,174
  • hELLO. (121)
    • 컴퓨터과학 (4)
      • 알고리즘 & 자료구조 (4)
    • 언어 & 프레임워크 (63)
      • Go (23)
      • PHP & Laravel (40)
    • 웹 (7)
    • 블록체인 (12)
      • 메인넷 (9)
      • 암호화폐 플랫폼 (3)
    • 포트폴리오 (10)
    • 칼럼 (20)
      • 에세이 (4)
      • 개발자스럽게 살기 (14)
      • 회고 (2)
    • 티스토리 (5)

블로그 메뉴

  • ⚡ 개발자 이력서
  • 🌟 깃허브
  • 💻 강의
  • ✨ 예제코드
  • ⭐ 브런치
  • 태그 클라우드
  • 방명록

공지사항

  • 2차 도메인을 설정했습니다 ✨

인기 글

  • JWT(JSON Web Token)의 개념부⋯
    2021.07.29
    JWT(JSON Web Token)의 개념부⋯
  • 'REST' 를 보다 'RESTful' 하게⋯
    2021.08.14
    'REST' 를 보다 'RESTful' 하게⋯
  • [Laravel] 라라벨 프레임워크⋯
    2021.06.10
    [Laravel] 라라벨 프레임워크⋯
  • 깃허브를 포트폴리오로 쓰려면⋯
    2021.12.25
    깃허브를 포트폴리오로 쓰려면⋯
  • 암호화폐 트레이딩 봇을 만들었⋯
    2021.05.12
    암호화폐 트레이딩 봇을 만들었⋯

태그

  • php
  • go
  • 블록체인
  • 포트폴리오
  • 개발
  • 라라벨
  • 프로그래머스
  • Algorithm
  • 코딩테스트
  • 개발 리뷰

최근 댓글

  • 고맙습니다 ~^^
    정상우
  • 오늘 블로그 만들었는데 검색하⋯
    엥뿌삐
  • 좋은 스킨 정말 감사드립니다.⋯
    이태홍
  • 고맙습니다 ㅎㅎ
    정상우
  • 제가 원하던 최고의 스킨입니다⋯
    _HEON

최근 글

  • 빠르게 성장하는 개발자의 세⋯
    2022.06.08
    빠르게 성장하는 개발자의 세⋯
  • 개발자와 엔지니어, 그 사이에서
    2022.05.10
    개발자와 엔지니어, 그 사이에서
  • 아임포트(Iamport)로 결제기능⋯
    2022.04.03
    아임포트(Iamport)로 결제기능⋯
  • 아임포트(Iamport)로 결제기능⋯
    2022.04.01
    아임포트(Iamport)로 결제기능⋯
  • [Laravel] 카페24 호스팅에 라⋯
    2022.03.29
    [Laravel] 카페24 호스팅에 라⋯

티스토리

hELLO · Designed By 정상우.
정상우

hELLO.

언어 & 프레임워크/PHP & Laravel

PHP: 자료형

2020. 3. 7. 05:22

Boolean

boolean 타입은 참과 거짓 두 가지의 값을 가질 수 있습니다. 조건문과 반복문 등 주요 제어 구조에서 사용됩니다.

true;
false;

(bool) 10; // -> true
(bool) []; // -> false
(bool) ''; // -> false
(bool) null; // -> false

Integers

integer 는 숫자형 자료형이므로서 PHP 에서 숫자를 표현할 때 사용합니다. 여기에는 16진수, 10진수, 8진수, 2진수가 포함됩니다.

10; // -> Decimal
0777; // -> Octal
0xF; // -> Hexdecimal
0b0101; // -> Binary

(int) 'Hello, world'; // -> 0
(int) '50x'; // -> 50
(int) true; // -> 1
(int) false; // -> 0
(int) null; // -> 0

Double (Float)

Double (Float) 형은 부동소수점을 나타내며 소수점 또는 지수표현법으로 표현합니다.

1.234;
1.2e3;
7E-3;

Strings

string 은 문자열을 나타냅니다. 문자열은 ' 과 " 를 사용하여 나타낼 수 있습니다.

'Hello, world';
"Hello, world";

(string) 10; // -> "10"
(string) true; // -> "1"
(string) false; // -> ""
(string) 1.234; // -> "1.234"

Backtick

Backtick(`) 은 Shell Command 를 실행할 때 사용할 수 있습니다.

echo `php --help`

Arrays

array 는 배열 자료형을 나타냅니다. 배열은 여러 값을 가질 수 있습니다. 그 값이란 정적 타입 언어와는 다르게 숫자, 객체, 함수 등을 가질 수 있습니다. array() 언어 구조를 사용하거나 [] 를 사용하여 배열을 정의할 수 있습니다.

선언하기

$messages = [
    'Hello, world',
    'Who are you?',
    'Bye'
];

// $messages = array('Hello, world', 'Who are you?', 'Bye');

Key-Value 매핑

배열은 키와 값을 매핑하여 나타낼 수도 있습니다.

$messages = [
    0           => 'Hello, world',
    'message'   => 'Who are you?',
    'Bye',
];

비구조화 할당

배열을 분해하여 각 변수에 할당을 할 수도 있습니다. list() 언어 구조를 사용하거나 [] 를 사용합니다.

// [, $message ] = [ 'Hello, world', 'Who are you?' ];
list(, $message) = ['Hello, world', 'Who are you?'];
// ['message' => $message ] = [ ... ]
list('message' => $message) = [
    'message' => 'Hello, world'
];

Spread 연산자

배열을 파라매터로 전달하거나, 다른 배열과 합칠 때 Spead 연산자를 사용할 수 있습니다. ... 로 표현합니다.

함수의 파라매터

function foo($messages)
{
    var_dump($messages);
}

foo(...['Hello, world', 'Who are you?']);

배열 합치기

$messages = [
    'Hello, world'
];

// $messages = [ 'Hello, world', 'Who are you?', 'Bye' ];
$messages = [
    ...$messages,
    'Who are you?',
    'Bye'
];

배열과 노는 법

배열을 다루는 몇가지 방법을 알아봅니다. 다른 언어와 크게 다르지 않습니다.

집어넣기

아래의 코드는 배열의 맨 마지막에 요소를 삽입합니다.

// array_push($messages, 'whoops');
$messages[] = 'whoops';

접근하기

배열의 3번 인덱스에 접근합니다. 인덱스는 제로 베이스입니다.

$messages[3];

갱신하기

배열의 3번 인덱스의 요소를 갱신합니다. 만약 3번 인덱스가 없다면 숫자 3을 키로삼고 값으로 Do you know? 를 집어넣습니다.

$messages[3] = 'Do you know?';

삭제하기

배열의 3번 인덱스에 해당하는 요소의 메모리를 릴리즈합니다. unset() 은 함수가 아닌 언어 구조입니다.

// array_pop($messages);
unset($messages[3]);

Iterables

Iterable 는 반복가능한 자료형을 의미합니다. 즉, 반복문인 foreach 문에서 돌릴 수 있는 형태라고 해석할 수 있습니다. 기본적으로는 Array 가 있고, 조금 더 나아가서 Generator 와 Iterator 를 구현한 클래스가 있습니다.

Array

// range(0, 10) 은 0 부터 10까지의 숫자 배열을 생성합니다.
foreach (range(0, 10) as $value) {
    echo $value;
}

Generator

function foo(iterable $iterable): iterable
{
    foreach ($iterable as $value) {
        yield $value;
    }
}

foreach (foo(range(0, 10)) as $value) {
	echo $value;
}

Iterator

class MyIterator implements Iterator
{
    private $position = 0;
    private $values;

    public function __construct(iterable $values)
    {
        $this->values = $values;
    }

    public function current()
    {
        return $this->values[$this->position];
    }

    public function key()
    {
        return $this->position;
    }

    public function next()
    {
        ++$this->position;
    }

    public function rewind()
    {
        $this->position = 0;
    }

    public function valid()
    {
        return isset($this->values[$this->position]);
    }
}

$myclass = new MyIterator(range(0, 10));
foreach ($myclass as $value) {
    echo $value;
}

Objects

Object 는 다른 언어와 마찬가지로 인스턴스를 의미합니다. 여기서 주의할 점은 함수 또한 Closure 의 오브젝트라는 점이고, Generator 또한 Generator 의 오브젝트라는 점입니다. 따라서 자료형 중에 함수는 별도로 지정되지 않았습니다.

// class Closure
var_dump(function () {});
var_dump(fn () => 'Hello, world');

class MyClass {}

// class MyClass
var_dump(new MyClass);
// class class@anonymous
var_dump(new class {});

function foo() 
{
    yield 1;
}
// class Generator
var_dump(foo());

Resources

Resource 는 MySQLi, Stream, File Hanlder 등 자원에 대한 처리를 할 수 있는 것들에 대한 자료형입니다.

$fh = fopen('http://example.com', 'r');
// resource
var_dump($fh);

NULL

null 은 변수 등에 데이터가 할당되기 이전에 들어갈 수 있는 임시형태입니다. 데이터가 할당되지 않은 상태를 나타내며, 선언되지 않은 변수에 접근할 때 null 을 반환합니다.

null;

// (null) 10;
// (null) 'Hello, world';

Callbacks / Callables

Callback / Callable 는 콜백 함수로서 호출될 수 있는 것을 말합니다. 예를 들어 다음과 같이 함수가 선언되어 있습니다.

/**
 * @param callback $func
 */
function foo(callable $func) 
{
    if (is_callable($func)) {
        var_dump(call_user_func($func));
    }
}

함수 (익명 함수)

함수 또는 익명 함수를 콜백 함수로 사용할 수 있습니다. 여기서 함수를 파라매터로 전달할 때는 문자열의 형태로 전달하는 것에 주목해주세요.

function foo2() {}

foo('foo2');
foo(fn () => 'Hello, world');

정적 메서드 & __invoke()

클래스 내에 선언 된 정적 메서드와 __invoke() 메서드도 마찬가지입니다. 정적 메서드를 전달할 때도 문자열로 전달하되 범위 연산 :: 를 사용합니다.

class MyClass 
{
    public static function foo() 
    {
        return __CLASS__;
    }
}

class MyClass2 
{
    public function __invoke() 
    {
        return __CLASS__;
    }
}

foo('MyClass::foo');
foo(new MyClass2);

더 읽을거리

PHP: 변수 (가변 변수, 스코프, 슈퍼 글로벌 변수)

https://www.inflearn.com/course/php7-reboot

https://www.inflearn.com/course/php7-oop

PHP 카테고리 목차 및 문서 정리

2020년, PHP 언어가 가지는 의미

https://www.php.net/manual/en/

    '언어 & 프레임워크/PHP & Laravel' 카테고리의 다른 글
    • PHP: 연산자
    • PHP: 상수 (매직상수)
    • PHP: 변수 (가변 변수, 스코프, 슈퍼 글로벌 변수)
    • PHP: 기본 문법
    php, 자료형
    정상우
    정상우
    과거의 배움으로 현재를 바꾸고 미래를 만듭니다. #25+2살 #INFJ #개발자 #브런치작가
    댓글쓰기
    1. 99C0RN
      2022.06.20 15:59 신고
      @정상우님
      너무 깔끔하게 정리된 포스팅 잘 봤습니당.
      혹시 게시한 포스팅 관련해서 출처남기고 개인 블로그에 포스팅하려는데 괜찮을까요?

      좋은 하루 보내세용

      ps. hELLO 스킨도 너무 잘쓰고있습니다~~!!
      수정/삭제댓글쓰기댓글보기
    다음 글
    PHP: 변수 (가변 변수, 스코프, 슈퍼 글로벌 변수)
    이전 글
    PHP: 기본 문법
    • 이전
    • 1
    • ···
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 다음

    티스토리툴바