如何用短代码检查多个输入字段的strlen

时间:2013-05-06 05:31:51

标签: php

多个输入字段,例如

<input type="text" name="row1[]" id="date1">
<input type="text" name="row1[]" id="amount1">
<input type="text" name="row1[]" id="name1">
<input type="text" name="row1[]" id="document1">

想要检查某些字段(不是所有字段)中的字符数是否至少为1(在示例中,不想检查id =&#34中的字符数; document1&# 34;现在使用此代码

if ( (strlen($_POST['row1'][0]) >= 1) or (strlen($_POST['row1'][1]) >= 1) or (strlen($_POST['row1'][2]) >= 1)) ) {
}

是否可以将代码缩短为(这不是正常工作的代码)?

if ( (strlen($_POST['row1']??want_to_check??) >= 1) ) {
}

并输入类似的东西(也不工作而不是真实的)

<input type="text" name="row1[]??want_to_check??" id="date1">
<input type="text" name="row1[]??want_to_check??" id="amount1">
<input type="text" name="row1[]??want_to_check??" id="name1">
<input type="text" name="row1[]??do_not_want_to_check??" id="document1">

仅检查某些字段(不是所有字段)中的字符数

3 个答案:

答案 0 :(得分:1)

一个棘手的速记

if (count(array_filter($_POST['row1'],'trim')) != count($_POST['row1'])) {
    //not all fields are set
}

但一般来说,如果你看到重复 - 你可以确定可以使用循环。看:

if ( (
    strlen($_POST['row1'][0]) >= 1) 
or (strlen($_POST['row1'][1]) >= 1) 
or (strlen($_POST['row1'][2]) >= 1)) ) 

三个重复的操作员只有改变计数器。我相信你可以为此写一个循环。不是吗?

更新

  1. 制作合理的字段名称

    <input type="text" name="row1[date]" id="date1">
    <input type="text" name="row1[amount]" id="amount1">
    <input type="text" name="row1[name]" id="name1">
    <input type="text" name="row1[document]" id="document1">
    
  2. 创建一个包含必填字段名称的数组

    $req = array('date1','amount1','name1');
    
  3. 循环检查此数组的输入

答案 1 :(得分:0)

这样的事情可能会起作用

function checkLength($inputs) {
    foreach($inputs as $input) {
        if(strlen($input) < 1) return false;
    }
    return true;
}

if(checkLength(array($_POST['input1'], $_POST['input2'], $_POST['input3']))) {

}

答案 2 :(得分:-1)

您可以使用foreach

循环浏览字段
$field_set = false;
if(!empty($_POST['row1'])){
    foreach($_POST['row1'] as $key => $row){
        //Your code here
        if(trim($_POST['row1']))
            $field_set = true;
    }
} 

如果你有动态的字段数,这将有效。