【问题标题】:PHP - If statement not working correctly in foreach loopPHP - 如果语句在 foreach 循环中无法正常工作
【发布时间】:2012-08-21 01:39:34
【问题描述】:

您好,我这里有这段代码:

public function length($args) {
    if (isset($this->length)) {
        foreach ($this->length as $k => $v) {
            if (strlen($args[$k])>=$v[0] && strlen($args[$k])<$v[1]) {
                return true;
            } else {
                array_push($this->form_errors, $v[2]);
                return false;
            }
        }
    } else { 
        return true;
    }
}

我不知道为什么,但它没有按预期工作。 foreach 循环仅循环通过 $args[$k] 之一,即使其中有 2 个。有人知道发生了什么吗?我正在匆忙写这个问题,所以如果我需要解释任何其他内容,请告诉我。

谢谢!

【问题讨论】:

  • 你能给我们看看 print_r($this->length)
  • 将返回值放入变量中,并在函数结束时返回。

标签: php mysql if-statement foreach


【解决方案1】:

if() 子句两侧的两个 return 语句在循环的第一次迭代中终止函数。 strlen 的东西要么是真的,你返回真,要么它们是假的,你返回假。无论如何,循环结束。

如果您只是想跳到下一个迭代,那么请改用continue,这将允许 foreach 继续进行。

【讨论】:

  • 但是不需要continue,因为循环中没有其他内容。
猜你喜欢
  • 1970-01-01
  • 2015-02-13
  • 2015-03-14
  • 2020-08-10
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
相关资源
最近更新 更多