PHP에서는 max () 및 array_filter () 가 일반적인 함수이며 각각 다른 기능과 응용 프로그램 시나리오가 있습니다. max () 함수는 배열의 최대 값을 반환하고 Array_filter ()는 지정된 조건에 따라 배열을 필터링하는 데 사용됩니다. 이 두 기능을 조합하여 사용하면 더 복잡한 기능을 구현할 수 있습니다. 그러나이 두 기능을 사용할 때 추가 논의 할 가치가있는 고급 사용 및주의 사항이 있습니다.
max () 함수
max () 함수는 배열의 최대 값을 반환합니다. 배열이 비어 있으면 False가 반환됩니다. 지정된 비교 함수를 기반으로 숫자 유형의 배열을 처리하거나 복잡한 유형의 배열을 비교할 수 있습니다.
$numbers = [1, 3, 2, 5, 4];
$max_value = max($numbers);
echo $max_value; // 산출 5
Array_Filter () 함수
Array_Filter () 는 배열 요소를 필터링하고 지정된 조건을 충족하는 요소를 유지하는 데 사용됩니다. 기본적으로 False 값 ( 0 , null , false , "" 등)의 요소를 제거합니다. 콜백 함수를 전달하면 필터 조건을보다 유연하게 정의 할 수 있습니다.
$numbers = [1, 2, 3, 4, 5];
$even_numbers = array_filter($numbers, function($num) {
return $num % 2 === 0;
});
print_r($even_numbers); // 산출 [2, 4]
숫자 배열이 있고 특정 조건을 충족하는 배열에서 최대 값을 찾고 싶다고 가정합니다. 현재 max () 및 array_filter ()를 사용하여 달성 할 수 있습니다. 예를 들어, 여러 정수가 포함 된 배열이 있다고 가정하면 2보다 큰 최대 값을 찾아야합니다.
$numbers = [1, 2, 3, 4, 5];
$filtered_numbers = array_filter($numbers, function($num) {
return $num > 2;
});
$max_value = max($filtered_numbers);
echo $max_value; // 산출 5
이 예에서는 Array_Filter ()가 먼저 2보다 큰 모든 숫자를 필터링 한 다음 Max ()는 필터링 된 배열에서 최대 값을 찾습니다.
실제 애플리케이션에서는 때로는 일부 외부 리소스 (예 : URL을 통해 얻은 데이터)를 기반으로 배열을 필터링해야 할 수도 있습니다. 현재 Array_Filter () 와 Max ()를 결합하여이를 달성 할 수 있습니다. 예를 들어 URL 목록이 있다고 가정하면 유효한 URL을 필터링하고 가장 빠른 액세스 (또는 가장 짧은 응답 시간)를 찾아야합니다.
URL 세트가 있고 API를 통해 각 URL의 응답 시간을 반환한다고 가정하십시오 (이 프로세스를 시뮬레이션 할 수 있음). 먼저 Array_Filter ()를 사용하여 유효한 URL을 필터링 한 다음 Max ()를 사용하여 가장 빠른 응답 시간으로 URL을 찾으십시오.
$urls = [
'http://gitbox.net/1' => 100, // 응답 시간 100ms
'http://gitbox.net/2' => 200, // 응답 시간 200ms
'http://gitbox.net/3' => 50, // 응답 시간 50ms
];
$filtered_urls = array_filter($urls, function($time) {
return $time < 150; // 过滤出응답 시간小于150ms~의URL
});
$fastest_url = array_search(max($filtered_urls), $filtered_urls);
echo "응답 시간最快~의URL예: " . $fastest_url; // 산출: http://gitbox.net/3
이 예에서는 Array_Filter () 를 통해 응답 시간이 150m 미만의 URL을 필터링 한 다음 Max ()를 사용하여 가장 빠른 응답 시간이있는 URL을 찾습니다.
max ()를 사용하면 필터링 된 배열이 비어 있으면 max ()가 false를 반환하여 오류 또는 예외가 발생할 수 있습니다. 따라서 max ()를 사용하기 전에 필터링 된 어레이가 비어 있는지 확인하는 것이 가장 좋습니다.
$filtered_numbers = array_filter([1, 2, 3, 4], function($num) {
return $num > 10; // 모든 숫자가보다 작다고 가정합니다10
});
if (!empty($filtered_numbers)) {
$max_value = max($filtered_numbers);
echo $max_value;
} else {
echo "没有符合条件~의值";
}
Max ()는 기본적으로 비교 크기 규칙을 사용하여 최대 값을 반환합니다. 배열 요소의 비교를 사용자 정의 해야하는 경우 (예 : 배열 요소는 개체입니다) 비교 규칙을 조정하기 위해 콜백 함수를 제공 할 수 있습니다. Array_Filter ()는 또한 콜백 함수를 지원하며 사용자 정의 조건에 따라 요소를 필터링 할 수 있습니다.
$items = [
['name' => 'item1', 'price' => 30],
['name' => 'item2', 'price' => 20],
['name' => 'item3', 'price' => 50],
];
$filtered_items = array_filter($items, function($item) {
return $item['price'] > 25;
});
$max_item = max(array_column($filtered_items, 'price'));
echo $max_item; // 산출 50
배열에 숫자 값이있을뿐만 아니라 다른 유형의 데이터가있는 경우, max () 및 array_filter () 의 동작은 직관적이지 않은 결과를 생성 할 수 있습니다. Union Array (예 : 배열의 값에 숫자 및 문자열이 모두 있음)의 경우 Max () 및 Array_Filter ()를 사용할 때 유형 변환 또는 명확한 유형 판단이 수행 될 수 있도록해야합니다.
Array_Filter () 와 함께 사용 하면 조건부 필터링 후 배열에서 최대 값을 찾는 데 도움이 될 수 있습니다. 숫자 배열, 객체 배열 또는 URL 목록이든,이 두 기능은 코드를보다 유연하고 효율적으로 만듭니다. 그것을 사용할 때는 빈 배열을 처리하고 실제 요구에 따라 적절한 비교 방법과 필터 조건을 선택하십시오. 이 두 기능을 유연하게 결합하여보다 복잡하고 고급 논리를 구현할 수 있습니다.
관련 태그:
array_filter