字符串连接中的PHP错误或我错了吗?

时间:2013-02-18 15:47:24

标签: php

我总是认为,Concatenation Dot是结合多行字符串。但今天我遇到了以下问题:

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!";
}

括号以获得正确的结果而不是奇怪的Parser错误。我理解串联 - 签名用法错了吗?我在组中创建多行常量(i.E.准备好的SQL语句)时注意到了相同的内容。

有谁知道我在做错了什么。我没见过的任何一点?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

你需要在这个表达式周围加上一些:

(strlen($col->getValue())-$col->getLength())