PHP에서 불리언(boolean) 값으로 이루어진 배열에서 참(true)과 거짓(false)의 개수를 각각 세어야 하는 경우가 종종 있습니다. 다음과 같은 배열이 있다고 가정해 보겠습니다.
$isMarriedDetails = [
false,
true,
false,
true,
true,
false,
false,
true,
false
];핵심 원리
배열에서 참과 거짓 값을 세는 가장 간단한 방법은 array_filter() 함수를 활용하는 것입니다. array_filter()를 콜백 함수 없이 호출하면, false로 평가되는 모든 요소(예: false, 0, null, 빈 문자열 등)가 자동으로 제거됩니다.
따라서 필터링된 배열의 개수를 count()로 세면 참 값의 개수가 되고, 여기서 전체 배열의 개수를 빼면 거짓 값의 개수를 구할 수 있습니다. 반대의 경우에도 동일한 방식으로 계산할 수 있습니다.
예제 코드
<!DOCTYPE html>
<html>
<body>
<?php
$isMarriedDetails = [
false,
true,
false,
true,
true,
false,
false,
true,
false
];
// 참(true) 값의 개수 계산
$trueResult = count(array_filter($isMarriedDetails));
// 전체 개수에서 참 값의 개수를 빼면 거짓(false) 값의 개수
$falseResult = count($isMarriedDetails) - $trueResult;
echo "Number of false value=", $falseResult, "<br>";
echo "Number of true value=", $trueResult;
?>
</body>
</html>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Number of false value=5 Number of true value=4
추가 팁
만약 배열에 0, null, 빈 문자열 같은 값까지 포함되어 있고, 오직 불리언 true/false만 정확히 구분하고 싶다면 콜백 함수를 사용하는 것이 안전합니다.
$trueResult = count(array_filter($isMarriedDetails, function($v) {
return $v === true;
}));이처럼 엄격한 비교(===)를 활용하면 의도치 않은 값이 참으로 계산되는 오류를 방지할 수 있습니다.