>  기사  >  백엔드 개발  >  PHP 쿼리는 2차원 배열을 반환합니다.

PHP 쿼리는 2차원 배열을 반환합니다.

WBOY
WBOY원래의
2023-05-06 15:57:08522검색

PHP에서는 in_array() 함수 사용, array_search() 함수 사용 등과 같이 배열의 요소를 쿼리하는 여러 가지 방법을 사용할 수 있습니다. 그러나 2차원 배열의 요소를 쿼리해야 하는 경우 이러한 방법은 덜 효과적입니다. 이 기사에서는 PHP에서 2차원 배열을 쿼리하고 필요한 요소를 반환하는 방법을 소개합니다.

먼저 간단한 2차원 배열을 살펴보겠습니다.

$students = array(
    array('name' => 'Tom', 'age' => 20, 'score' => 90),
    array('name' => 'Jack', 'age' => 22, 'score' => 85),
    array('name' => 'Mary', 'age' => 21, 'score' => 92),
);

특정 학생의 성적을 쿼리한다고 가정하고 foreach 루프를 사용하여 배열을 순회하고 조건문을 사용하여 성적이 맞는지 확인할 수 있습니다. 예를 들어:

$wantedStudent = 'Jack';

foreach ($students as $student) {
    if ($student['name'] == $wantedStudent) {
        echo $wantedStudent . '的成绩是:' . $student['score'];
        break;
    }
}

위 코드는 다음과 같이 출력됩니다.

Jack的成绩是:85

그러나 많은 학생을 쿼리해야 하는 경우 이 방법은 매우 번거롭습니다. 따라서 이를 사용하기 위해 함수로 캡슐화할 수 있습니다.

function searchArray($array, $key, $value) {
    foreach ($array as $item) {
        if ($item[$key] == $value) {
            return $item;
        }
    }
    return null;
}

위 함수는 쿼리할 배열, 키 이름 및 키 값의 세 가지 매개변수를 받습니다. 배열을 반복하고 일치하는 항목을 찾으면 해당 항목을 반환하고 그렇지 않으면 null을 반환합니다.

다음과 같이 함수를 사용할 수 있습니다.

$wantedStudent = 'Mary';
$student = searchArray($students, 'name', $wantedStudent);

if ($student) {
    echo $wantedStudent . '的成绩是:' . $student['score'];
}

위 코드는 이전 예제와 동일하며 다음을 출력합니다.

Mary的成绩是:92

그러나 배열이 매우 큰 경우 전체 배열을 순회하면 성능에 영향을 미칩니다. 따라서 배열과 콜백 함수를 취하고 콜백 함수의 조건을 충족하는 배열 요소가 포함된 새 배열을 반환하는 배열 함수 array_filter()를 사용할 수 있습니다.

다음은 array_filter()를 사용하여 2차원 배열을 조회하는 예입니다.

function searchArray($array, $key, $value) {
    $filtered = array_filter($array, function($item) use ($key, $value) {
        return $item[$key] == $value;
    });
    return count($filtered) ? array_values($filtered)[0] : null;
}

위 함수는 이전 함수와 기능은 동일하지만 조건에 맞는 배열 요소를 필터링하기 위해 array_filter()를 사용하고, 따라서 성능이 향상됩니다.

지금까지 PHP에서 2차원 배열을 쿼리하고 필요한 요소를 반환하는 방법을 배웠습니다. 수백 개 이상의 데이터가 있는 경우 배열 요소 쿼리를 구현하려면 array_filter() 및 익명 함수를 사용하는 것이 좋습니다.

위 내용은 PHP 쿼리는 2차원 배열을 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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