[PHP] 배열과 연관배열
PHP는 내장 배열타입을 지원한다.
배열은 array라는 함수로 생성할 수 있다. 이건 가변인자를 받는다.
array(값1, 값2, 값3, ...)

이렇게 해서 돌리면

이렇게 뜬다.
0 인덱스에 1, 1 인덱스에 2... 잘 들어간걸 볼 수 있다.
그리고 배열의 요소는 []와 인덱스값으로 접근이 가능하며, 읽고 쓰는 것이 자유롭다.
인덱스는 위에서 보았듯 0이 시작이다.


저것만 잘 바뀐걸 볼 수 있다.
문제점
php가 원래 타입체크나 이런저런 부분에 있어서 허술한 점이 다수 존재하기 때문에, 유의할 점이 있다.
php의 배열은 가령 아래와 같은 얼렁뚱땅식의 코드도 허용한다.

뜬금없는 인덱스 10에, 그것도 뜬금없는 문자열을 삽입하는 이런 코드도

정상적으로 작동한다.
foreach 순회
foreach문을 사용하면 for를 사용하는 것보다 훨씬 편리한 접근이 가능하다.
foreach(배열명 as 순회변수)
{ ... }


처음부터 끝까지 한바퀴를 돈다.
삽입과 삭제
array_push 함수를 사용하면 요소의 추가가 가능하다. 맨 뒤에 추가한다.



없던 []인덱스에 값을 추가해도 요소가 등록된다.


함수호출에 따른 오버헤드가 없어서, 단순 성능은 이게 더 빠르다는 것 같다.
array_pop은 뒤에서 요소 하나를 날린다.



이외에도 다양한 함수가 있으니, 아래 참조에 레퍼런스 문서를 살펴보자.
연관배열(딕셔너리)
위에선 인덱스값으로 0, 1, 2 등의 정수값만을 썼지만, 문자열같은 기타 타입들로도 인덱스를 구성할 수 있다.
이런걸 바로 연관배열, 혹은 딕셔너리, 해시테이블이라 부른다.
생성법은 배열과 유사하나 다르다. array 함수에 요소로 키=>값 의 값 쌍을 넣는 것이다.
array(키1=>값1, 키2=>값2, 키3=>값3, ...)


아까 0, 1, ...순서대로만 찼던 모습과 다르게 키값으로 지정한 값이 인덱스에 와있다. 그리고 저 키값을 통해 값에 접근할 수 있다.
배열과 인터페이스는 동일하다.
기존 배열에 쓰던 array_push 등도 사용할 수 있다. 당연히 기존 배열처럼 작동, 0인덱스부터 넣어버린다.


돌아가긴 한다만, 좋은 사용은 아닐 것이다.
연관배열도 foreach문을 통해 편리한 순회문을 구성할 수 있다. as 뒤의 순회용 변수도 키=>값 쌍으로 작성한다.



참고로, 연관배열이나 기존의 배열이나 실상 같은 타입이기 때문에. 이런 코드도 정상동작한다.



그렇다.
참조
https://www.php.net/manual/en/ref.array.php
https://opentutorials.org/course/779/4930