[PHP] 배열에 특정 값이 있는지 확인하는 방법, in_array
문제
워드프레스에서 어떤 페이지의 자식 페이지 목록을 배열 형태로 가져오고, 특정 페이지 ID가 해당 배열에 포함되어 있는지 확인 해야 하는 상황이 발생했습니다.
이런 경우 간단하게 in_array 함수를 이용하면 간단하게 확인이 가능합니다.
해결
일단 자식 페이지의 ID 가 담긴 배열 변수를 $children 이라고 하고, 확인하고자 하는 ID 를 $postid 라고 했을 때 아래와 같이 간단하게 확인 할 수 있습니다.
if ( in_array( $postid, $children ) ) {
// 배열에 ID 가 포함 되어 있을 경우 실행할 작업
}
간단하게 in_array 함수의 사용 방법을 정리하면, 첫 번째 인자는 비교할 값, 두 번째 인자는 비교 대상이 되는 배열을 넣으면 됩니다.
in_array 함수 반환 값은 boolean(true 또는 false) 이기 때문에 위와 같은 예제에서는 $postid 가 $children 배열에 포함되어 있다면 true 를 반환하고 설정된 작업을 실행하게 됩니다.
만약 배열에서 값의 존재 유무를 판단할 때 값의 형(Type)까지 비교해서 확인하고 싶다면,
if ( in_array( $postid, $children, true ) ) {
// 배열에 ID 가 포함 되어 있을 경우 실행할 작업
}
위 코드와 같이 in_array 세 번째 인자에 true 를 넣어 형까지 엄격하게 비교 할 수 있습니다. 세 번째 인자의 기본 값은 false 이기 때문에 생략할 경우 형은 비교하지 않습니다.
참고자료
- in_array, PHP.net