23. PHP 연관배열
연관 배열(associative array)
PHP에서는 숫자뿐만 아니라 문자열도 배열 요소의 인덱스로 사용할 수 있다.
만약 정수와 문자열 이외에 다른 타입의 값을 키값으로 사용하면, 내부적으로 정수와 문자열로 타입 변환이 이루어진다.
연관 배열(associative array)은 배열의 인덱스를 정수뿐만 아니라 다양한 타입으로 설정한 배열을 의미한다.
연관 배열을 사용하면 키값에 좀 더 명확한 의미를 부여할 수 있다.
연관 배열을 생성하는 방법은 일반 배열을 생성하는 방법과 동일한다.
1
|
$배열이름 = array();
|
cs |
연관 배열의 참조
연관 배열의 각 요소를 참조하고 싶을 때는 배열의 이름과 함께 키(key) 값을 사용하면 된다.
1
|
$배열이름["키"] = 값;
|
cs |
1
2
3
4
5
6
7
8
9
10
|
<?php
$fruit = array(); // 배열 생성
$fruit["apple"] = 1000; // 연관 배열 요소 추가
$fruit["banana"] = 2000;
$fruit["orange"] = 1500;
echo $fruit["apple"]."<br>";
echo $fruit["banana"]."<br>";
echo $fruit["orange"]."<br>";
?>
|
cs |
연관 배열을 생성하면서 동시에 배열 요소를 초기화할 수도 있다.
이때는 키와 값 사이에 => 라는 기호를 사용해야 한다.
1
2
3
4
5
6
7
8
9
10
11
|
<?php
$fruit = array(
"apple" => 1000,
"banana" => 2000,
"orange" => 1500,
);
echo $fruit["apple"]."<br>";
echo $fruit["banana"]."<br>";
echo $fruit["orange"]."<br>";
?>
|
cs |
생성관 연관 배열에 새로운 요소를 추가할 수도 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php
$fruit = array(
"apple" => 1000,
"banana" => 2000,
"orange" => 1500,
);
echo $fruit["apple"]."<br>";
echo $fruit["banana"]."<br>";
echo $fruit["orange"]."<br>";
$fruit["manggo"] = 1800;
echo $fruit["manggo"]."<br>";
?>
|
cs |
루프를 이용한 연관 배열로의 접근
연관 배열의 인덱스는 숫자가 아니므로, for 문을 사용하여 배열 요소에 접근할 수 없다.
대신 foreach 문이나 each() 함수를 사용해서 접근할 수 있다.
foreach 문을 사용하면 연관 배열 요소의 키값과 요소의 값을 변수에 따로 저장하여 루프 내에서 사용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
|
<?php
$fruit = array(
"apple" => 1000,
"banana" => 2000,
"orange" => 1500,
);
foreach($fruit as $key => $value){
echo $key. " " . $value."<br>";
}
?>
|
cs |
each() 함수는 배열 커서(array cursor)가 현재 가리키고 있는 배열 요소를 반환하고, 다음 배열 요소를 가리키도록 한다.
이 함수는 가리키는 요소의 다음 요소가 배열의 마지막 요소라면 동작을 종료한다.
경고 이 함수는 PHP 7.2.0에서 비권장이 되었고, PHP 8.0.0에서 삭제되었습니다.
이 함수에 의존하지 않을 것을 강력히 권장합니다.
each함수의 사용법이 있으나 현재는 권장되지 않는 방법이고 php 8 버전에서는 기능이 삭제되어 있다.
따라서, each() 함수의 사용법은 다루지 않겠다.