[PHP] 배열
WordPress에서 PHP 코드를 읽다 보면 변수 다음으로 자주 만나게 되는 것이 배열입니다.
WP_Query의 조건을 만들거나 add_filter()에 전달할 값을 정리할 때도 여러 데이터를 하나의 배열에 묶어서 사용합니다.
PHP 배열
배열은 여러 값을 하나의 변수에 묶어서 저장할 수 있는 자료형입니다.
PHP에서는 다음과 같이 배열을 만들 수 있습니다.
$items = array( 'apple', 'banana', 'orange' );또는 짧은 배열 문법을 사용할 수도 있습니다.
$items = [ 'apple', 'banana', 'orange' ];두 방식은 같은 의미입니다.
WordPress 코드에서는 기존 코드 스타일이나 프로젝트의 PHP 버전에 따라 두 문법을 모두 볼 수 있습니다.
인덱스 배열
값만 순서대로 저장하면 각 값에는 0부터 시작하는 숫자 인덱스가 자동으로 부여됩니다.
$items = [ 'apple', 'banana', 'orange' ];각 값은 다음과 같이 가져올 수 있습니다.
$first_item = $items[0];
$second_item = $items[1];$first_item에는 apple, $second_item에는 banana가 저장됩니다.
배열의 순서는 0부터 시작한다는 점을 기억해 두면 좋습니다.
연관 배열
WordPress에서 더 자주 보게 되는 형태는 문자열을 키로 사용하는 연관 배열입니다.
$args = [
'post_type' => 'post',
'posts_per_page' => 6,
'post_status' => 'publish',
];왼쪽의 post_type, posts_per_page, post_status가 키이고 오른쪽이 각 키에 대응하는 값입니다.
특정 값은 다음과 같이 가져올 수 있습니다.
$post_type = $args['post_type'];이 경우 $post_type에는 post가 저장됩니다.
WordPress 함수는 옵션이나 조건을 하나의 연관 배열로 전달하는 경우가 많기 때문에 이 구조를 읽는 데 익숙해지는 것이 중요합니다.
배열에 값 추가하기
배열의 마지막에 새로운 값을 추가할 때는 빈 대괄호를 사용할 수 있습니다.
$items = [ 'apple', 'banana' ];
$items[] = 'orange';결과는 다음과 같습니다.
[ 'apple', 'banana', 'orange' ]연관 배열에는 새로운 키를 지정해서 값을 추가할 수 있습니다.
$args = [
'post_type' => 'post',
];
$args['posts_per_page'] = 6;기존 키에 새로운 값을 할당하면 해당 값이 변경됩니다.
$args['posts_per_page'] = 9;중첩 배열
배열 안에 또 다른 배열을 넣을 수도 있습니다.
WordPress의 tax_query, meta_query 같은 조건에서 자주 볼 수 있는 형태입니다.
$args = [
'post_type' => 'post',
'tax_query' => [
[
'taxonomy' => 'category',
'field' => 'slug',
'terms' => [ 'news', 'guide' ],
],
],
];$args라는 배열 안에 tax_query라는 키가 있고, 그 값으로 다시 배열이 들어가 있는 형태입니다.
WordPress에서는 하나의 조건에 여러 세부 설정이 필요한 경우 이런 중첩 배열을 많이 사용합니다.
배열 확인하기
배열 안에 어떤 값이 들어 있는지 확인할 때는 var_dump()를 사용할 수 있습니다.
$args = [
'post_type' => 'post',
'posts_per_page' => 6,
];
var_dump( $args );배열을 조금 더 읽기 쉽게 확인하고 싶다면 print_r()도 사용할 수 있습니다.
print_r( $args );WPCodeBox에서 코드를 테스트할 때 배열 구조를 확인하는 데 유용합니다.
다만 운영 중인 사이트 화면에 디버깅 결과가 그대로 출력되지 않도록 확인 후 제거하는 것이 좋습니다.
배열을 반복해서 사용하기
배열의 모든 값을 하나씩 처리할 때는 foreach를 사용할 수 있습니다.
$items = [ 'apple', 'banana', 'orange' ];
foreach ( $items as $item ) {
echo $item;
}연관 배열에서는 키와 값을 함께 가져올 수도 있습니다.
$args = [
'post_type' => 'post',
'posts_per_page' => 6,
];
foreach ( $args as $key => $value ) {
echo $key;
echo $value;
}foreach 자체는 반복문이지만 WordPress 코드에서 배열과 함께 자주 등장하기 때문에 기본적인 형태는 함께 알아두는 편이 좋습니다.
반복문의 자세한 내용은 별도의 주제로 분리해서 학습해도 충분합니다.
WordPress에서의 배열 예시
WordPress에서는 함수의 여러 옵션을 배열 하나에 모아서 전달하는 방식이 매우 흔합니다.
대표적인 예가 WP_Query입니다.
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 6,
'orderby' => 'date',
'order' => 'DESC',
];
$query = new WP_Query( $args );이 코드는 각각의 값을 따로 함수에 넘기는 대신 조회 조건을 $args 배열에 정리한 뒤 WP_Query에 전달합니다.
정리
PHP 배열은 여러 값을 하나의 변수에 묶어서 관리하기 위한 자료형입니다.
$args = [
'post_type' => 'post',
'posts_per_page' => 6,
];숫자 인덱스를 사용하는 배열과 문자열 키를 사용하는 연관 배열이 있으며, 배열 안에 다른 배열을 넣어 중첩된 구조를 만들 수도 있습니다.