PHP

23. PHP 연관배열

drizzle0925 2021. 3. 6. 11:54
728x90

연관 배열(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)가 현재 가리키고 있는 배열 요소를 반환하고, 다음 배열 요소를 가리키도록 한다.

이 함수는 가리키는 요소의 다음 요소가 배열의 마지막 요소라면 동작을 종료한다.

each - 배열에서 현재 키와 값을 한 쌍으로 돌려주며 커서를 진행한다.

경고 이 함수는 PHP 7.2.0에서 비권장이 되었고, PHP 8.0.0에서 삭제되었습니다.

이 함수에 의존하지 않을 것을 강력히 권장합니다.

 

each함수의 사용법이 있으나 현재는 권장되지 않는 방법이고 php 8 버전에서는 기능이 삭제되어 있다.

따라서, each() 함수의 사용법은 다루지 않겠다.

 

728x90

'PHP' 카테고리의 다른 글

25. PHP 매개변수와 인자  (0) 2021.03.07
24. PHP 함수  (0) 2021.03.07
22. PHP 다차원배열  (0) 2021.03.06
21. PHP 배열  (0) 2021.03.06
20. PHP 기타 제어문  (0) 2021.03.04