2

我一直认为,连接点是组合多行字符串。但是今天我在执行以下操作时遇到了麻烦:

if (strlen($col->getValue())>$col->getLength())
          $this->errors[]=$name." ist ".
          strlen($col->getValue())-$col->getLength().
          " too much chars!";

我认为这是 if 子句之后的一行,但 PHP 在 if 之后评估了第 2 行和第 3 行,即使这里没有给出条件。我需要做一些

if (strlen($col->getValue())>$col->getLength()) {
          $this->errors[]=$name." ist ".
          strlen($col->getValue())-$col->getLength().
          " Zeichen zu lang!";
}

括号来获得正确的结果,而不是奇怪的解析器错误。我是否理解连接符号的用法错误?在类中创建多行常量时我注意到了同样的情况(iE 准备的 SQL 语句)。

有谁知道我在这里做错了什么。有什么我没见过的吗?

4

2 回答 2

4

因为您正在使用不使用大括号的可怕做法if。只有条件后面的第一行被视为条件的一部分。

于 2013-02-18T15:49:12.343 回答
3

您需要在此表达式周围加上括号:

(strlen($col->getValue())-$col->getLength())
于 2013-02-18T15:49:24.913 回答