2016-09-12 3 views
-1

나는 궁극적으로 제출 된 값에서 백분율 점수를 계산할 양식이 있습니다. 내가 가진 문제는 일부 답변이 n/a로 표시 될 수 있으므로 데이터가있는 총 필드 수만 계산할 수 있어야한다는 것입니다 (실패의 경우 0, 통과의 경우 1). 아래 코드 에서처럼 n/a 응답에 빈 문자열을 사용했습니다. 나는 PHP에 익숙하지 않아이 문제를 해결하는 가장 좋은 방법이 무엇인지 궁금해하고 있었다. 제출 된 빈 문자열 수를 세는 방법이 있습니까? 아니면 데이터가 포함 된 전체 문자열 수만 계산합니까?배열의 빈 문자열 수를 계산하는 방법

<label> 
    <input type="radio" name="item1" value="">N/A 
</label> 
<label> 
    <input type="radio" name="item1" value="0">Fail 
</label> 
<label> 
    <input type="radio" name="item1" value="1">Pass 
</label> 
+0

모든 입력을 반복합니다. 기존 배열에서' ""값을 가진 것들을 제거하거나 다른 것들을 새로운 배열에 추가하십시오. 그런 다음 세고 합계하십시오. –

+0

[빈 배열 요소 제거] 가능한 복제본 (0120-337-333) – Sherif

+0

감사의 뜻 Sherif, 저에게 올바른 방향으로 지적 해 주셨습니다. – misterpauly

답변

1

일반적으로 질문에 대한 답변을 보려면 배열을 필터링하고 빈 문자열을 제거한 다음 항목 수를 계산하십시오. 이를 원래 배열의 항목 수와 비교하면 얼마나 많은 빈 문자열이 있는지 알 수 있습니다. 측정하려는 모든 가치에 대해이를 수행 할 수 있습니다.

$filtered = array_filter($original, function($el) { 
    // check for empty strings as 0 for example is a valid value 
    return $el !== ''; 
}); 
var_dump(count($original) - count($filtered)); 

그러나 양식의 경우 일반적으로 개별 필드의 유효성을 검사 할 때 사용할 수 있는지 확인해야합니다.

+0

감사합니다. jeroen, 지금 작동하고 있습니다. 나는 당신의 코드로 그것을 시도했지만 0의 결과를 계속해서 보냈다. 나는 여전히 이것에 대한 초보자이므로 올바르게 따라하지 않았다. 아래에서 작업해야하는 코드는 꽤 유사합니다. '$ score = array ($ _ POST [ 'item1'], $ _POST [ 'item2'], $ _POST [ 'item 3']); $ potential_score = sizeof (array_filter ($ score, function ($ value) {return $ value! == '';}))); print_r ($ potential_score); ' – misterpauly

0

확실한 - 양식을 제출할 때 $_POST 배열을 처리 할 수 ​​있습니다.이 예에서는 사용자 정의 콜백을 사용하여 array_filter을 사용합니다.

function countempty($value){ 
    /*return empty($value);*/ 
    return $value==''; 
} 

$empty=count(array_filter($_POST, 'countempty')); 
echo 'Empty: '.$empty; 
+0

아니요, OP의 예에서'0 '/'Fail '값도 제거됩니다. – jeroen

+0

좋은 지적 - 나는 0이 비어 있다는 것을 잊었다 ... – RamRaider

관련 문제