2016-09-12 8 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

[空の配列要素を取り除く]の可能な複製(http://stackoverflow.com/questions/3654295/remove-empty-array-elements) – 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配列を処理することができます。

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

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

いいえ、OPの例の' 0'/'Fail'値も削除されます。 – jeroen

+0

良い点 - ゼロが空であることを忘れています... – RamRaider

関連する問題