728x90

php는 웹프로그래밍 언어이지만 사실 웹에서만 사용하는게 아니라 인터프리터를 사용해서 커맨드라인에서 스크립팅을 해볼 수 있다. 그러나 아무도 그러한 용도로 사용하지 않기 때문에 필자의 홈페이지에서는 그러한 것을 고려하지 않는다. 따라서 모든 상황은 apache와 php와 mysql을 사용하게 될것이다. 그리고 모든 테스트는 웹페이지에서만 할것이며 가끔 필요하다면 인터프리터에서 사용하게 될것이다. 강의에서는 일반적인 상황에서는 툴을 사용하는 방법을 알려주지 않을 것이다. 툴을 사용하는 방법에 대해서 알기를 원한다면 usage-php를 확인하도록 하자.


참고:

[APM]PHP사용하기 - apache설치(1)

[APM]PHP사용하기 - php설치(2)


연관배열은 일반배열과는 조금 다르다.

일반배열이 숫자만을 인덱스 번호로 받는다면 연관배열은 문자열을 인덱스 번호로 받을 수 있다.

이는 파이썬에서 사용하는 딕셔너리와 자바스크립트에서 사용하는 오브젝트와 유사하다.

쓰는 방식도 유사하지만 완전히 같은 개념은 아니다.

엄밀히 말하면 php는 배열과 연관배열의 구분이 없다고 봐도 되기 때문이다.

일단 예제를 통해서 연관배열을 보도록 하자.


$arr = array('a' => 6, 'b' => 8, 'c' => 12);

배열을 선언할때 저번에도 번호를 띄어넘고 싶다면 10 => 12같은 형태로 사용했다.

연관배열은 모든 형태를 저런식으로 =>를 통해서 선언해야한다.

즉 위의 경우 6은 문자열 a이며 8은 문자열 b인 셈이다.

여기서 번호라는 개념은 없다.

즉 배열의 0번째원소는 6이라는 방식으로는 접근이 불가능 하게 된다.


echo 'arr[\'a\'] = ' . $arr['a'] . "<br>";

만약 호출을 한다면 위와같은 형식으로 호출하게 된다.

중요한점은 $arr[a]같은 방식이아니라 문자열을 제대로 넣어줘야한다는 것이다.

그 외의 방식은 저번에 나온 배열과 같이 값일 삭제,수정,추가가 가능하다.


그러나 php의 연관배열의 특징은 일반 배열과 연관 배열이 혼합된 형태라는 것이다.

가령 아래와 같은 코드를 사용하는 것 역시 가능하다는 것.


$arr = array(2, 4, 'a' => 6, 'b' => 8, 'c' => 12, 14);

위의 코드를 보면 배열과 연관배열이 섞여 있다.

배열은 총 3개이며 연관배열은 총 3개가 있으므로 총 배열은 6개가 된다.


여기서 중요한 점은 배열과 연관배열의 인덱싱이 따로논다는 것이다.

위 arr의 0번째 요소는 2이며 1번째 요소는 4이다. 여기 까지에 의문점을 가지는 사람은 아무도 없을 것이다.

또한 'a'요소는 6이고 'b'요소는 8이고 'c'요소는 12이다.

문제는 14값이다. 이녀석은 딱봐도 일반 배열로 선언된걸 알 수 있다.

그러면 도대체 이 녀석은 몇번째 녀석일까?

2번째일까? 아니면 5번째일까?


답은 2번째이다. 그 이유는 배열과 연관배열은 인덱스를 따로 따로 가지기 때문이다.

실제로는 같이 쓰는 경우는 없다. 그러므로 사실 이 부분을 깊게 생각할 필요는 없다.


이까지 했으면 아래 예제를 한번 테스트 해보도록 하자.


<?php
$arr = array(2, 4, 'a' => 6, 'b' => 8, 'c' => 12, 14);
echo 'arr count = ' . count($arr) . "<br>";

echo 'arr[\'a\'] = ' . $arr['a'] . "<br>";

$arr['d'] = 16;
echo 'arr[\'d\'] = ' . count($arr) . "<br>";

echo 'arr[2] = ' . $arr[2] . "<br>";

이 코드를 보면 배열의 크기를 보고 그리고 각각 원소를 호출해 볼 수 있다.

그럼 결과를 한번 보도록 하자.


제대로 작동하는 것을 확인할 수 있다.


'Programming > PHP' 카테고리의 다른 글

[Php-09]반복문(while,dowhile,for,foreach)  (0) 2018.05.15
[Php-07]배열(Array)  (0) 2018.05.15
[Php-06]switch문  (0) 2018.01.10
[Php-05]조건문  (0) 2018.01.10
[Php-04]연산자  (0) 2017.11.29

+ Recent posts