PHP에서 연관 배열(associative array)은 문자열 키를 사용하기 때문에 일반적인 숫자 인덱스처럼 접근하기 어렵습니다. 하지만 array_keys() 함수를 활용하면 각 요소의 키를 별도의 인덱스 배열로 추출할 수 있고, 이를 통해 반복문 안에서 숫자 인덱스를 사용하듯 키와 값을 모두 다룰 수 있습니다.
기본 예제
다음은 array_keys() 함수로 연관 배열의 키 목록을 가져온 뒤, for 반복문을 사용해 키와 값을 출력하는 기본적인 코드입니다.
<?php
$arr = array( "a"=>"5", "b"=>"20", "c"=>"35", "d"=>"55");
$keys = array_keys( $arr );
echo "Array key and value...\n";
for($x = 0; $x < sizeof($arr); $x++ ) {
echo "key: ". $keys[$x] . ", value: ". $arr[$keys[$x]] . "\n";
}
?>출력 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
Array key and value... key: a, value: 5 key: b, value: 20 key: c, value: 35 key: d, value: 55
배열 값 수정하기
이번에는 숫자 인덱스를 활용해 특정 위치의 값을 변경하는 예제를 살펴보겠습니다. $keys[3]으로 네 번째 키('s')에 접근한 후 해당 값을 새로 할당하면, 원본 배열의 값이 업데이트됩니다.
<?php
$arr = array( "p"=>"150", "q"=>"100", "r"=>"120", "s"=>"110");
$keys = array_keys( $arr );
echo "Array key and value...\n";
for($x = 0; $x < sizeof($arr); $x++ ) {
echo "key: ". $keys[$x] . ", value: ". $arr[$keys[$x]] . "\n";
}
$arr[$keys[3]] = "25";
echo "\nUpdated Array key and value...\n";
for($x = 0; $x < sizeof($arr); $x++ ) {
echo "key: ". $keys[$x] . ", value: ". $arr[$keys[$x]] . "\n";
}
?>출력 결과
실행 결과는 다음과 같습니다. 마지막 요소의 값이 110에서 25로 변경된 것을 확인할 수 있습니다.
Array key and value... key: p, value: 150 key: q, value: 100 key: r, value: 120 key: s, value: 110 Updated Array key and value... key: p, value: 150 key: q, value: 100 key: r, value: 120 key: s, value: 25
정리
연관 배열에 숫자 인덱스처럼 접근해야 할 때는 array_keys() 함수로 키 배열을 먼저 만들어 두는 것이 핵심입니다. 이렇게 하면 for 반복문과 인덱스 연산을 자유롭게 사용할 수 있어, 특정 위치의 값을 읽거나 수정하는 작업이 훨씬 간편해집니다. 참고로 단순히 전체 요소를 순회하는 것이 목적이라면 foreach 문이 더 직관적일 수 있으니 상황에 맞게 선택하는 것이 좋습니다.