$_POST['ore']
選択ボックスとテキスト入力フィールドのテーブルから整数を送信するフォームがあります。問題の配列は次のとおりです。
print_r($_POST)
//returns
Array
(
[ore] => Array
(
[0] => 1
[1] => 2
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
)
....
そして、それだけ大きくなります。これは小さなアプリケーションです。10 個の選択ボックス、10 個の入力ボックス。フォーム自体と他の機能はうまく機能します。
ただし、送信時にデータは別のページに送信され、そこで収集された情報が処理され、その配列の にwhile
基づくループで新しいテーブルが生成されます。count
しかし、ゼロは技術的に空であるため、0より大きい値のみをカウントしたいです。
私は複数の関数、例、ビットピースを試し、ばかげた運も試しましたが、肯定的な結果はありませんでした。部分的に動作するようになったものもありますが、ほとんどの場合、最後の行が省略されています。
私は現在持っていますsize = count($_POST['ore']);
-しかし、これは10行のテーブルを作成し(そうあるべきです)、テーブルの残りの行をwhileコードの最後のループで埋めます。機能的ですが、面倒で、やりたいことではありません。
array_filter を試してみました
function nonzero($var){
return ($var > 0); }
$size = array_filter($_POST['ore'], "nonzero");
運がない。
複数の場所で試しif(isset($_POST['ore']))
ましたが、配列に0の値があるため、技術的に設定されています。
では、$_POST['ore'] 配列の値をカウント、またはフィルタリングしてからカウントし、0 を取り除き、0 より大きいキーのみをカウントまたは返すにはどうすればよいでしょうか。
私の打ちのめされたキーボードと私は前もって感謝します。
編集 - 答えが見つかりました 早朝からのフィードバックに感謝します
function nonzero($var){
return ($var > 0); }
$size = count(array_filter($_POST['ore'], "nonzero"));
できました^^