>백엔드 개발 >PHP 문제 >PHP에서 배열에 대해 퍼지 쿼리를 수행하는 방법

PHP에서 배열에 대해 퍼지 쿼리를 수행하는 방법

PHPz
PHPz원래의
2023-04-26 10:28:151355검색

PHP 개발에서 배열은 피할 수 없는 부분입니다. 배열의 데이터를 쿼리해야 할 때 일반적으로 퍼지 쿼리를 사용합니다. 이 기사에서는 PHP에서 배열의 퍼지 쿼리를 수행하는 방법을 소개합니다.

1. 배열 퍼지 쿼리란 무엇인가요?

배열 퍼지 쿼리는 키워드 기반의 데이터 쿼리로, 완전한 일치가 필요하지 않고 일치하는 항목만 있으면 결과가 반환됩니다. 실제 개발에서는 유사한 특성을 가진 데이터를 찾기 위해 배열 퍼지 쿼리를 사용하는 경우가 많습니다.

예를 들어 이름, 전화번호, 이메일 주소 및 기타 정보를 포함한 여러 연락처 정보가 포함된 연락처 그룹이 있습니다. 퍼지 쿼리를 사용하여 사람의 연락처 정보를 찾을 수도 있고 이름이나 전화번호 중 일부만 입력하여 결과를 찾을 수도 있습니다.

2. 퍼지 쿼리에는 array_filter()를 사용하세요

PHP의 array_filter() 함수는 배열의 각 요소에 대해 조건부 필터링을 수행하고 조건을 충족하는 결과를 반환할 수 있습니다. 이 함수를 사용하여 배열의 퍼지 쿼리를 구현할 수 있습니다.

여러 연락처 정보를 포함하는 사용자 배열이 있다고 가정해 보겠습니다.

$users = array(
    array('name' => '张三', 'phone' => '13811112222', 'email' => 'zhangsan@example.com'),
    array('name' => '李四', 'phone' => '13911113333', 'email' => 'lisi@example.com'),
    array('name' => '王五', 'phone' => '15011112222', 'email' => 'wangwu@example.com'),
    array('name' => '赵六', 'phone' => '18011114444', 'email' => 'zhaoliu@example.com')
);

이제 키워드를 기반으로 사용자를 찾는 기능을 구현하려고 합니다. 함수를 정의하고, 키워드와 사용자 배열을 전달하고, array_filter() 함수를 사용하여 조건을 충족하는 배열의 요소를 필터링할 수 있습니다.

function search_users($keyword, $users) {
    $result = array_filter($users, function($user) use ($keyword) {
        foreach($user as $value) {
            if(stripos($value, $keyword) !== false) {
                return true;
            }
        }
        return false;
    });
    return $result;
}

위 함수는 각 사용자 정보를 루프 비교하여 일치하는 항목이 발견되면 true를 반환합니다. Stripos() 함수는 대소문자를 구분하지 않고 다른 문자열에서 처음 나타나는 문자열을 검색할 수 있습니다.

다음 함수를 호출하여 퍼지 쿼리를 수행할 수 있습니다.

$search_result = search_users('1111', $users);

이 쿼리는 전화번호에 "1111"이 포함된 모든 연락처 정보를 반환합니다.

array_filter() 함수를 사용하여 배열에 퍼지 쿼리를 구현하는 것은 간단하고 사용하기 쉽지만 문제도 있습니다: 배열의 데이터 양이 많으면 성능에 영향을 미칠 수 있습니다. 이때 배열의 퍼지 쿼리를 구현하는 다른 방법을 사용할 수 있습니다.

3. 퍼지 쿼리에 정규식을 사용하세요

정규식은 텍스트를 일치시키고 바꾸는 데 사용되는 도구입니다. PHP에서는 preg_grep() 함수를 사용하여 정규 표현식을 기반으로 배열에서 조건을 충족하는 요소를 필터링할 수 있습니다.

여러 키워드를 포함하는 키워드 배열이 있다고 가정해 보겠습니다.

$keywords = array('1111', 'san', 'y@example');

이제 사용자 배열에서 키워드 조건을 충족하는 모든 연락처 정보를 찾고 싶습니다. 이 기능을 달성하기 위해 정규식을 사용할 수 있습니다:

function search_users_regex($keywords, $users) {
    $result = array();
    foreach ($keywords as $keyword) {
        $pattern = '/' . preg_quote($keyword, '/') . '/i'; // i表示不区分大小写
        // preg_grep()返回满足条件的元素的数组
        $matches = preg_grep($pattern, $users);
        $result = array_merge($result, $matches);
    }
    return $result;
}

위 함수는 키워드 배열을 반복하고, 각 키워드에 대한 정규식을 생성하고, preg_grep()을 사용하여 일치시키고, 자격 있는 연락처 정보를 결과 배열에 병합합니다.

다음 함수를 호출하여 퍼지 쿼리를 수행할 수 있습니다.

$search_result = search_users_regex($keywords, $users);

이 쿼리는 "1111"이 포함된 전화번호, "san"이 포함된 이름, " y@example이 포함된 이메일 주소를 포함하여 모든 키워드 조건을 충족하는 모든 연락처 정보를 반환합니다. "님의 연락처입니다.

배열의 퍼지 쿼리에 정규식을 사용하면 조건에 맞는 결과를 더 정확하게 찾을 수 있지만 단점도 있습니다. 정규식을 구성하려면 특정 지식과 기술이 필요하며, 잘 작성하지 않으면 코드가 이해하고 유지하기가 어렵습니다.

4. 요약

Array 퍼지 쿼리는 PHP 개발에서 일반적으로 사용되는 함수 중 하나로, 배열에서 조건에 맞는 요소를 빠르게 찾는 데 도움이 됩니다. 이 기사에서는 배열 퍼지 쿼리를 구현하는 두 가지 방법, 즉 array_filter() 함수를 사용하는 것과 정규식을 사용하는 방법을 소개합니다. 실제 개발에서는 실제 요구 사항에 따라 구현에 적합한 방법을 선택할 수 있습니다. 동시에 퍼지 쿼리가 성능에 미칠 수 있는 영향에도 주의를 기울이고 쿼리 효율성을 최대한 최적화해야 합니다.

위 내용은 PHP에서 배열에 대해 퍼지 쿼리를 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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