programing

PHP 배열에서 비어 있지 않은 항목을 카운트하는 방법은 무엇입니까?

goodsources 2023. 8. 4. 23:03
반응형

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);

$countvariable은 배열에서 비어 있지 않은 모든 항목을 카운트합니다.$arr.

예를 들어, 조건은 누군가가 원할 경우 변경될 수 있습니다.empty($item)우리는 더 강한 조건을 사용할 수 있습니다.$item === '',기타.

배열이 지정된 경우$arr비어 있습니다.$initial반환됩니다.

언급URL : https://stackoverflow.com/questions/4422889/how-to-count-non-empty-entries-in-a-php-array

반응형