>백엔드 개발 >PHP 튜토리얼 >PHP에서 in_array 함수를 사용하여 대소 문자를 구분하지 않고 지정된 값이 배열에 존재하는지 찾는 방법

PHP에서 in_array 함수를 사용하여 대소 문자를 구분하지 않고 지정된 값이 배열에 존재하는지 찾는 방법

WBOY
WBOY원래의
2023-06-26 11:49:451558검색

PHP에서는 지정된 값이 배열에 존재하는지 확인해야 하는 경우가 많습니다. 이를 위해 PHP는 이 기능을 수행할 수 있는 매우 편리한 in_array() 함수를 제공합니다. 하지만 값을 검색할 때 대소문자를 구분하고 싶지 않은 경우가 있는데, 대소문자를 구분하지 않고 조회하려면 in_array() 함수를 어떻게 사용해야 할까요? 이 문서에서는 이 문제를 해결하는 방법을 자세히 설명합니다.

1. in_array() 함수의 기본 사용법

in_array() 함수의 사용법은 매우 간단합니다. 찾을 값과 찾을 배열이라는 두 가지 매개변수가 포함되어 있습니다. 이 함수는 찾으려는 값이 배열에 존재하는지 여부를 나타내는 부울 값을 반환합니다. 다음은 in_array() 함수의 기본 사용 예입니다.

<?php
$fruits = array("apple", "banana", "orange", "pear");
if (in_array("banana", $fruits)) {
    echo "Found banana in the array";
} else {
    echo "Did not find banana in the array";
}
?>

위 예에서는 4개의 요소가 포함된 $fruits 배열을 정의하고 "banana"가 배열에 있는지 확인합니다. "바나나"가 배열에 존재하므로 in_array() 함수는 true를 반환하고 코드는 "배열에서 바나나를 찾았습니다"를 출력합니다.

2. 대소문자를 구분하지 않는 in_array() 함수 구현

in_array() 함수는 기본적으로 대소문자를 구분합니다. 즉, 대문자와 소문자를 서로 다른 문자로 처리합니다. 하지만 검색할 때 대소문자를 구분하지 않으려는 경우가 있는데 어떻게 해야 할까요? 현재 이 기능을 구현하기 위해 기능을 사용자 정의할 수 있습니다. 다음은 대소문자를 구분하지 않는 in_array() 함수를 구현하는 예입니다.

<?php
function in_array_ci($needle, $haystack) {
    return in_array(strtolower($needle), array_map('strtolower', $haystack));
}

$fruits = array("Apple", "Banana", "Orange", "Pear");
if (in_array_ci("banana", $fruits)) {
    echo "Found banana in the array";
} else {
    echo "Did not find banana in the array";
}
?>

위의 예에서는 찾을 값과 찾을 배열이라는 두 개의 매개변수를 사용하는 in_array_ci()라는 함수를 정의했습니다. 이 함수는 먼저 PHP 내장 함수 strtolower()를 통해 찾고자 하는 값을 소문자로 변환한 후, array_map() 함수를 통해 배열의 모든 요소를 ​​소문자로 변환합니다. 그런 다음 in_array() 함수는 이 변환된 배열을 호출하여 검색할 수 있으므로 대소문자를 구분하지 않는 검색 작업을 완료할 수 있습니다.

우리의 사용자 정의 in_array_ci() 함수는 strtolower() 및 array_map() 함수를 호출하기 때문에 성능 측면에서 in_array() 함수보다 약간 열등할 수 있다는 점에 유의해야 합니다. 대소문자를 구분하지 않는 대규모 검색을 수행해야 하는 경우 사용자 정의 기능을 사용하지 않고 대신 보다 효율적인 다른 방법을 사용하는 것이 좋습니다.

3. 클래스로 캡슐화하여 사용하세요

대소문자를 구분하지 않는 in_array() 함수를 더 편리하게 사용하기 위해 다른 프로젝트에서 쉽게 재사용할 수 있도록 클래스로 캡슐화할 수도 있습니다. 다음은 간단한 예입니다.

<?php
class ArraySearch {
    public static function inArrayCi($needle, $haystack) {
        return in_array(strtolower($needle), array_map('strtolower', $haystack));
    }
}

$fruits = array("apple", "banana", "orange", "pear");
if (ArraySearch::inArrayCi("BaNaNa", $fruits)) {
    echo "Found banana in the array";
} else {
    echo "Did not find banana in the array";
}
?>

위의 예에서는 대소문자를 구분하지 않는 검색 작업을 구현하기 위한 inArrayCi() 메서드가 있는 ArraySearch라는 클래스를 정의합니다. 이 메서드는 이제 클래스 메서드로서 여러 프로젝트의 다른 코드에서 호출하기가 더 쉽다는 점을 제외하면 이전 사용자 정의 함수 구현 원칙과 완전히 동일합니다. 사용할 때는 클래스 이름과 메서드 이름을 통해서만 호출하면 됩니다.

요약

PHP의 in_array() 함수는 배열에 값이 존재하는지 알아내는 기능을 쉽게 구현할 수 있는 매우 편리한 배열 검색 함수입니다. 그러나 어떤 경우에는 검색 시 대소문자를 구분하지 않기를 원합니다. 이 경우 함수를 사용자 정의하여 이 함수를 구현하거나 클래스로 캡슐화할 수 있습니다. 이렇게 하면 이 기능을 보다 유연하게 사용할 수 있으며 성능 문제에 주의가 필요합니다. 이 글이 PHP를 배우고 있는 독자들에게 도움이 되기를 바랍니다.

위 내용은 PHP에서 in_array 함수를 사용하여 대소 문자를 구분하지 않고 지정된 값이 배열에 존재하는지 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.