Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';两个月后,我不能提交我的表格<;选项>;有相同的价值_Php_Html - Fatal编程技术网

Php Can';两个月后,我不能提交我的表格<;选项>;有相同的价值

Php Can';两个月后,我不能提交我的表格<;选项>;有相同的价值,php,html,Php,Html,编辑:我错误地分析了问题,所有值​​等于0是有问题的。您是对的,问题似乎来自功能,您知道如何改进该功能吗? 我的网站有问题 为了上下文化,我创建了一个允许管理员向数据库添加新成员的网页。我们可以自定义字段(姓名、姓氏、年龄等) 但是我的选择选项字段有问题 …使用函数not_empty()检查字段是否已填充 if(!function_exists('not_empty')){ function not_empty($fields = []){ if(count($field

编辑:我错误地分析了问题,所有值​​等于0是有问题的。您是对的,问题似乎来自功能,您知道如何改进该功能吗?

我的网站有问题

为了上下文化,我创建了一个允许管理员向数据库添加新成员的网页。我们可以自定义字段(姓名、姓氏、年龄等)

但是我的选择选项字段有问题

…使用函数not_empty()检查字段是否已填充

if(!function_exists('not_empty')){
    function not_empty($fields = []){
        if(count($fields) != 0){
            foreach($fields as $field){
                if(empty($_POST[$field]) || trim($_POST[$field]) == ""){
                    return false;
                }
            }
            return true;
        }
    }
}
我是否被迫使用不同的值​​为了我的整个表格

function not_empty($fields = []) {

    foreach($fields AS $key) {

        // Check is set
        if(!isset($_REQUEST[$key]))
            return false;

        $input = $_REQUEST[$key];

        // Check not null value
        if(is_null($input))
            return false;

        // If is array of list items check at least one is selected
        if(is_array($input) && count($input) === 0)
            return false;

        // Must be string or number, trim white sapce
        $input = trim($input);

        // If is valid number continue iteration
        if(is_numeric($input))
            continue;

        // Must be a string, check length is more than zero
        if(strlen($input) === 0)
            return false;

    }

    return true;

}
为什么和他们自己可以与你作对

函数empty将在以下值情况下返回true

  • 未声明变量、数组键、对象键
  • isnull
  • 为空/长度为零的字符串(“”
  • is为假
  • 0(零)
在您的用例中,值为零的Select选项将被错误地计算为空true

如果变量、数组键、对象键都已声明,则函数isset将返回true,即使函数为空时其值返回true()

  • 如果null
  • 如果字符串为空/长度为零(''
  • 如果false,则为true
  • 如果0(零),则为真
因此,这使得检查一个值是否是不需要的空白值变得非常棘手。 您可以通过考虑这些事实来抑制这些复杂性,并选择更明智的值来处理不太复杂的代码

还请注意,我没有费心检查$fields的数组中是否有任何项,只要传递了空数组,for-each循环就不会运行,也不会抛出错误

您在代码中放入的条件
if
语句越少,它的性能就越好,请始终进行实验

即使是空数组,也最好将值作为预期类型传递,而不是将值设为NULL

空检查对代码不好,空设置并不总是正确的 必要的

为什么和他们自己可以与你作对

函数empty将在以下值情况下返回true

  • 未声明变量、数组键、对象键
  • isnull
  • 为空/长度为零的字符串(“”
  • is为假
  • 0(零)
在您的用例中,值为零的Select选项将被错误地计算为空true

如果变量、数组键、对象键都已声明,则函数isset将返回true,即使函数为空时其值返回true()

  • 如果null
  • 如果字符串为空/长度为零(''
  • 如果false,则为true
  • 如果0(零),则为真
因此,这使得检查一个值是否是不需要的空白值变得非常棘手。 您可以通过考虑这些事实来抑制这些复杂性,并选择更明智的值来处理不太复杂的代码

还请注意,我没有费心检查$fields的数组中是否有任何项,只要传递了空数组,for-each循环就不会运行,也不会抛出错误

您在代码中放入的条件
if
语句越少,它的性能就越好,请始终进行实验

即使是空数组,也最好将值作为预期类型传递,而不是将值设为NULL

空检查对代码不好,空设置并不总是正确的 必要的


empty
的主要优点是,它在检查变量/键的值是否等于
false
(其中包括“0”;请参阅)的同时检查变量/键是否已设置,而不会引起未定义的通知。使用这里的操作,您应该能够使用
isset
。这将检查变量是否已设置,这将防止下一部分在未设置时抛出通知,并且下一部分将确保它有一个值(包括零)


empty
的主要优点是,它在检查变量/键的值是否等于
false
(其中包括“0”;请参阅)的同时检查变量/键是否已设置,而不会引起未定义的通知。使用这里的操作,您应该能够使用
isset
。这将检查变量是否已设置,这将防止下一部分在未设置时抛出通知,并且下一部分将确保它有一个值(包括零)


考虑到你的价值观,你的非空逻辑似乎有缺陷
empty($\u POST[$field])
将为
0
返回true,导致not\u empty返回false。为了强化@Devon的TheoryNo,您不必使用不同的值。只要每个控件都有一个独特的
名称
,它们就不会相互干扰。因此,除了已经说过的关于您使用
empty
的内容之外,似乎问题出在此处未显示的某些代码中(尽管
empty
问题可能与此相关)。真的,我很惊讶地听到它与
$\u POST['ban'一起工作==0
.Empty将选择选项值中的0视为空,因此每次选择0作为值时,它总是给您“return false”。考虑到您的值,非空逻辑似乎有缺陷
empty($\u POST[$field])
将为
0
返回true,导致not\u empty重新生成
if(!function_exists('not_empty')){
    function not_empty($fields = []){
        if(count($fields) != 0){
            foreach($fields as $field){
                if(empty($_POST[$field]) || trim($_POST[$field]) == ""){
                    return false;
                }
            }
            return true;
        }
    }
}
function not_empty($fields = []) {

    foreach($fields AS $key) {

        // Check is set
        if(!isset($_REQUEST[$key]))
            return false;

        $input = $_REQUEST[$key];

        // Check not null value
        if(is_null($input))
            return false;

        // If is array of list items check at least one is selected
        if(is_array($input) && count($input) === 0)
            return false;

        // Must be string or number, trim white sapce
        $input = trim($input);

        // If is valid number continue iteration
        if(is_numeric($input))
            continue;

        // Must be a string, check length is more than zero
        if(strlen($input) === 0)
            return false;

    }

    return true;

}
if (!isset($_POST[$field]) || trim($_POST[$field]) == "") {