PHP - 자료형 - Array , Object, Resource, NULL
자료형 - Array
- Array
- 배열
- PHP는 특이하게 연관배열(키와 값이 쌍을 이룬 배열)을 제공한다.
- 보통 JAVA에서는 따로 클래스를 만들어서, JAVASCRIPT 에서는 {}로 객체를 만들어서 사용한다.
- 키 값은 이미 있는 키 값과 단순 비교(==)해서 덮어 쓸지, 새로 추가할지를 결정한다.
-
$arr[1]=1;
$arr[true]=2;
key 1은 key true 와 같은 값이므로 덮어 쓸 것이다.
결과적으로
$arr = array(1=>2);
가 된다. - 표현식
- $array = array(
“bar”,
“foo”,
); - $array = array(
“foo” => “bar”,
“bar” => “foo”,
); -
// as of PHP 5.4
$array = [
“foo” => “bar”,
“bar” => “foo”,
]; - 동작
- $arr[] = 1;
-
변수 $arr에 1이라는 정수를 배열로 추가한다.(indexed Array로 동작해서 맨 마지막순서로 추가된다.)
- $arr[‘x’] = 1;
-
변수 $arr에 키는 x이고 값은 1이라는 정수를 배열로 추가한다.(연관배열로 동작한다.)
- Object
- 객체
- 기본적으로 클래스를 선언하면 객체가 생성된다.
- 배열을 객체로 변환하면 키값에 따른 멤버변수를 가진 객체로 변경된다.
-
연관 배열이 사용하기 더 편하기 때문에 따로 객체로 변경해서 쓸 이유는 없어 보인다.
- 멤버 변수 접근
- $x = $obj->xxx ;
-
xxx라는 멤버 변수 값을 가져온다.
- $x = $obj->{$key} ;
-
$key에 지정된 값으로 된 멤버 변수 값을 가져온다.
- $x = $obj->yyy() ;
-
yyy라는 메소드의 리턴값을 가져온다.
- $x = $obj->{$key}() ;
-
$key에 지정된 값으로 된 메소드의 리턴값을 가져온다.
- Resource
- 리로스, 자원형
- 리소스 변수을 출력(var_dump)해보면 “resource(5) of type (stream)” 와 유사하게 출력된다.
- 리소스 변수는 복사되지 않는다. 항상 참조되어 사용한다.
-
같은 대상을 다시 지정하고 싶으면 리소스변수로 새로 만들어야한다.
- 기본 변수형 외 잡다한것들
-
fopen, DB 연결 등은 리소스로 처리된다.
- NULL
-
널, 값이 없음.
- NULL인경우
- 변수에 값이 없는 경우 (notice 발생)
- unset 으로 변수를 해제한 경우 (notice 발생)
-
상수 null을 할당한 경우
- TIP
- is_null() 로 체크 가능
- isset()을 사용하면 notice 발생없이 null인지 아닌지 확인 가능.
NULL존재 유무 테스트 1 <? 2 echo “변수에 값이 없는 경우”; 3 $x; 4 var_dump($x); 5 echo “변수를 unset한 경우”; 6 $x =1; 7 unset($x); 8 var_dump($x); 9 echo “변수에 상수 NULL을 할당한 경우”; 10 $x = 1; 11 $x = null; 12 var_dump($x);
변수에 값이 없는 경우 Notice: Undefined variable: x in /private/tmp/test.php on line 4 NULL 변수를 unset한 경우 Notice: Undefined variable: x in /private/tmp/test.php on line 8 NULL 변수에 상수 NULL을 할당한 경우NULL