PHP의 연관 배열은 문자열 키를 기반으로 동작하기 때문에, 숫자 인덱스처럼 직접 접근할 수 없습니다. 하지만 array_keys() 함수를 활용하면 배열의 키 목록을 추출한 뒤, 이를 정수 인덱스로 순회하면서 각 키와 값에 접근할 수 있습니다.
기본 사용 예제
아래 예제는 array_keys()로 키 배열을 만들고, for 반복문을 통해 인덱스 순서대로 키와 값을 출력합니다.
<?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";
}
?>실행 결과
Array key and value... key: p, value: 150 key: q, value: 100 key: r, value: 120 key: s, value: 110
값 수정까지 포함한 예제
같은 방식으로 특정 인덱스에 해당하는 요소의 값을 변경할 수도 있습니다. 아래 예제에서는 세 번째와 네 번째 요소의 값을 새로 할당한 후, 변경된 배열을 다시 출력합니다.
<?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[2]] = "20";
$arr[$keys[3]] = "10";
echo "\nUpdated 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: 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: 20 key: s, value: 10
핵심 정리
array_keys()는 연관 배열의 모든 키를 일반 인덱스 배열로 반환합니다. 따라서 이 배열을 정수 인덱스로 순회하면서 원본 배열의 키에 접근하면, 마치 숫자 인덱스 배열을 다루듯 연관 배열을 읽고 쓸 수 있습니다. 배열 전체를 순회하는 경우라면 foreach가 더 간결하지만, 인덱스 기반 제어가 필요한 상황에서는 위 방법이 유용합니다.