PHP 배열 요소 검색 array_search 사용 방법

PHP에서도 배열을 사용하는 경우가 많습니다.

사용 빈도가 많은 만큼 준비되어 있는 함수도 많이 있습니다.

이번에는 배열에 관련된 함수중 요소의 값을 검색하는 array_search 사용 방법을 알아보겠습니다.

array_search 함수는 배열에서 검색하고 싶은 값이 있는지 확인하고 싶을 때 사용합니다.

작성 방법을 보겠습니다.

array_search(검색 값, 배열)

 

반환값으로는 검색된 값의 위치인 인덱스를 반환합니다.

샘플을 보면서 사용방법을 확인해 보겠습니다.

$data = array(15, 3, 20, 9, 7);
$key = array_search(20, $data);
print_r($key);

 

결과

2

 

반환값으로 2를 받았습니다.

배열의 인덱스는 0부터 시작을 하기 때문에 3번째 위치에 있는 20의 인덱스는 2가 됩니다.

값이 배열에 존재하지 않는 경우에는 반환값 형태가 달라집니다.

샘플을 보면서 확인해 보겠습니다.

$data = array(15, 3, 20, 9, 7);
$key = array_search(10, $data);
var_dump($key);

 

결과

bool(false)

 

배열에는 10이라는 값이 존재하지 않습니다.

반환값으로는 bool형태인 false가 반환되었습니다.

값이 존재하는 경우에는 인덱스가 반환되기 때문에 반환값 형태는 int형입니다.

하지만 값이 존재하지 않는 경우에는 bool형태이기 대문에 주의해서 사용해야 합니다.

결과값을 false를 반환하는 경우가 있기 때문에 if문에서 주의해서 사용해야 합니다.

if문에서 ==와 ===를 사용해 샘플을 보겠습니다.

==와 ===의 자세한 내용은 아래를 참조해 주세요.

PHP 비교 연산자 == 와 === 차이점값을 비교하는 경 링크링크

 

if문에서 ==와 ===는 결과에 차이가 있습니다.

먼저 샘플을 보겠습니다.

$data = array(15, 3, 20, 9, 7);
$key = array_search(10, $data);

if( $key == false ){
    print_r("값이 존재 하지 않습니다. -1");
}

if( $key === false ){
    print_r("값이 존재 하지 않습니다. -2");
}

 

결과

값이 존재 하지 않습니다. -1
값이 존재 하지 않습니다. -2

 

배열 값이 존재하지 않기 때문에 false를 반환하고 첫 번째 if와 두 번째 if문에서 모두 처리를 하고 있습니다.

이번에는 배열에서 15라는 값을 검색해 인덱스 위치 0을 반환하도록 해보겠습니다.

$data = array(15, 3, 20, 9, 7);
$key = array_search(15, $data);

if( $key == false ){
    print_r("값이 존재 하지 않습니다. -1");
}

if( $key === false ){
    print_r("값이 존재 하지 않습니다. -2");
}

 

결과

값이 존재 하지 않습니다. -1

 

첫 번째 if문인 == 비교에서 작성한 조건과 일치해 문자열을 출력하고 있습니다.

원하지 않는 결과 발생했습니다.

결과값을 비교해 값이 없는지 판별하고 싶은 경우에는 ===를 사용해 비교해야 합니다.

마지막으로 배열에 중복된 값이 존재하는 경우를 살펴보겠습니다.

$data = array(15, 3, 20, 9, 20);
$key = array_search(20, $data);
print_r($key);

 

결과

2

 

배열에 20이라는 값이 중복되어 존재합니다.

중복된 값이 있는 경우에는 첫 번째 일치하는 위치의 인덱스만 반환을 합니다.

댓글