PHP 배열에서 비어 있지 않은 항목을 카운트하는 방법은 무엇입니까?
고려 사항:
[name] => Array ( [1] => name#1
[2] => name#2
[3] => name#3
[4] => name#4
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)
$name = $_POST['name']
나는 그 결과를 원합니다.4
.
count ($name) = 9
count (isset($name)) = 1
count (!empty($name)) = 1
저는 마지막 것이 제가 필요로 하는 것을 달성할 것이라고 생각하지만, 그렇지 않습니다(빈 항목은 양식에 입력되지 않은 입력에서 나온 것입니다).
array_filter를 사용하면 다음과 같이 배열에 "truthy" 값만 유지할 수 있습니다.
array_filter($array);
명시적으로 비-empty
또는 필터 기능이 더 복잡한 경우:
array_filter($array, function($x) { return !empty($x); });
# function(){} only works in in php >5.3, otherwise use create_function
따라서 비어 있지 않은 항목만 계산하려면 전화를 건 것과 동일한 방법으로empty(item)
그들 각각에서:
count(array_filter($array, function($x) { return !empty($x); }));
하지만, 로서empty()
배열에 다음과 같은 값이 포함되어 있으면 실제로 아무것도 얻을 수 없습니다.FALSE
또는"0"
그것들은 또한 빈 것으로 간주될 것이고, 일반적인 호출과 같습니다.array_filter
.
더 나은 방법은 카운트할 항목을 명시적으로 지정하는 것입니다. 예를 들어 빈 문자열만 제외하려면 다음을 사용하십시오.
array_filter($array, function($x) { return ($x !== ""); });
count(array_filter($name));
가능한 해결책:먼저 배열에서 빈/null, 거짓 및 0 값을 제거한 다음 배열의 나머지 값을 카운트해야 합니다.
배열에서 0 값을 제거할 필요가 없지만 null 및 false 값은 제거할 경우
count(array_filter($arrayName, 'strlen'));
//"strlen" use as second parameter if you no need to remove zero '0' values
배열에서 0, null 및 false 값을 제거해야 하는 경우
count(array_filter($arrayName));
간단한 계산 기능은 다음과 같습니다.
function non_empty(array $a) {
return array_sum(array_map(function($b) {return empty($b) ? 0 : 1;}, $a));
}
이렇게 하면 이름에 대한 세 번째 입력을 다른 입력 집합의 세 번째 값에 연결하고 그 사이에 빈 입력이 있는 경우와 같이 양식 처리 기능에 필요한 경우 배열 인덱스가 유지됩니다.
가장 쉬운 방법은 count()
그리고. array_filter()
함수(결국 추가 콜백 포함)array_filter()
유형 호환성 검사가 필요할 때, 그러나 기본값의 결과일 때.empty()
기능만 있으면 충분합니다. 필요하지 않습니다.
그러나, 우리는 또한 다음을 사용함으로써 그것을 달성할 수 있습니다. array_reduce()
기능, 그리고 이 접근 방식은 계산 복잡성 측면에서 약간 더 최적입니다.
$initial = 0;
$count = array_reduce($arr, function($carry, $item) {
$carry += empty($item) ? 0 : 1;
return $carry;
}, $initial);
그$count
variable은 배열에서 비어 있지 않은 모든 항목을 카운트합니다.$arr
.
예를 들어, 조건은 누군가가 원할 경우 변경될 수 있습니다.empty($item)
우리는 더 강한 조건을 사용할 수 있습니다.$item === ''
,기타.
배열이 지정된 경우$arr
비어 있습니다.$initial
반환됩니다.
언급URL : https://stackoverflow.com/questions/4422889/how-to-count-non-empty-entries-in-a-php-array
'programing' 카테고리의 다른 글
forkJoin이 더 이상 사용되지 않습니다. resultSelector가 더 이상 사용되지 않습니다. 대신 매핑할 파이프입니다. (0) | 2023.08.04 |
---|---|
org.jetbrain을 실행하는 동안 오류가 발생했습니다.코틀린 그라들내부의.캅트 실행 (0) | 2023.08.04 |
Xcode는 C 및 Objective-C 코드만 리팩터할 수 있습니다.Xcode 6에서 swift 클래스 이름을 변경하는 방법은 무엇입니까? (0) | 2023.08.04 |
SSH-Keygen "해당 파일 또는 디렉터리 없음" (0) | 2023.08.04 |
오류 1064(42000):SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서를 확인하십시오. (0) | 2023.08.04 |