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 중국어 웹사이트의 기타 관련 기사를 참조하세요!