PHP에서 배열에 포함된 여러 문자열 중 가장 긴 문자열의 길이를 구해야 하는 경우가 종종 있습니다. 이럴 때는 array_map 함수와 max 함수를 조합하면 아주 간단하게 해결할 수 있습니다.
핵심 원리
array_map('strlen', $array)를 사용하면 배열의 모든 요소에 대해 strlen 함수가 적용되어, 각 문자열의 길이로 이루어진 새로운 배열이 반환됩니다. 그다음 max 함수를 적용하면 해당 길이 배열 중 최댓값, 즉 가장 긴 문자열의 길이를 얻을 수 있습니다.
기본 문법
$max_len = max(array_map('strlen', $array));예제 코드
아래 예제는 문자열 배열에서 가장 긴 문자열의 길이를 구하는 전체 과정을 보여줍니다.
<?php
$array = array("a", "Ab", "abcd", "abcdfegh", "achn");
$max_len = max(array_map('strlen', $array));
echo $max_len;
?>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다. 배열의 요소 중 "abcdfegh"가 8글자로 가장 길기 때문입니다.
8
동작 방식 단계별 설명
- 1단계:
array_map('strlen', $array)가 배열의 각 요소에strlen을 적용합니다. - 2단계: 각 문자열의 길이 값들인
[1, 2, 4, 8, 4]배열이 생성됩니다. - 3단계:
max()가 이 배열에서 최대값인8을 반환합니다.
참고 사항
만약 가장 긴 문자열 자체(길이가 아닌 문자열)가 필요하다면, array_reduce나 usort를 활용하는 방법도 있습니다. 또한 한글처럼 멀티바이트 문자가 포함된 배열이라면 strlen 대신 mb_strlen을 콜백으로 사용하는 것이 정확한 글자 수를 계산하는 데 유리합니다.