【问题标题】:if-check for all array valuesif-检查所有数组值
【发布时间】:2013-08-29 00:43:03
【问题描述】:

我有一个 HTML 表单和一个 PHP 代码。表单包含很多不同的<input> 东西。只有当 all 字段不为空时,我才希望在浏览器中输出一些文本。

例如,对于名为nameage 的两个字段,我将执行以下操作:

if($_POST['name'] and $_POST['age']) { ... }

但在这里,我拥有的领域远不止两个。我该怎么办?

【问题讨论】:

标签: php html


【解决方案1】:

你可以试试这样的

$allSet = true;
foreach($_POST as $key => $value){
    if(empty($value)){
        $allSet = false;
        break;
    }
}

【讨论】:

  • 我喜欢这个方法,但没有给出具体的错误信息给留空的内容。此外,您应该在验证它是否为空之前将其移动到一个函数中 + 修剪该值
  • 当然,还有很多事情可以做。目标是为他指明正确的方向:)
【解决方案2】:

如果需要发送的所有输入,您也可以试试这个:

if (count(array_filter($_POST)) != count($_POST)) {
    // at least one input is empty
}

array_filter()

此函数返回相同的数组,但没有 nullfalse0 或空字符串的值。因此,如果过滤后的数组中的条目比原始数组中的条目少,这意味着至少有一个输入没有被填充。

编辑:works

【讨论】:

  • 我喜欢这个解决方案,它非常漂亮,但对于提出问题的人来说,这可能不是正确的水平。
  • @Dragony 是的,我喜欢让它简单而简短。也许这也不在反对者的“正确水平”上!尽管如此,它对于任何理解它的人来说都是有用的:)
  • 其实这个简单很多,不需要POST变量数组。
【解决方案3】:

简单的功能。您可以附加必填字段array('name', 'age', 'phone')

function checkPost()
{
    if (!$_POST) return false;

    $fields = array('name', 'age');
    foreach ($fields as $field)
    {
        if(!$_POST[$field])
            return false;
    }
    return true;
}

if(checkPost()) { ... }

【讨论】:

  • 结构看起来有点太复杂了,就 OPS 技能水平而言
  • 不复杂。只需将新字段推送到数组即可。
猜你喜欢
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2021-01-05
  • 2014-08-11
  • 1970-01-01
相关资源
最近更新 更多