字符串连接中的PHP错误还是我错了?

字符串连接中的PHP错误还是我错了?,php,Php,我一直认为,连接点是组合多行字符串。但今天我在做以下事情时遇到了麻烦: if (strlen($col->getValue())>$col->getLength()) $this->errors[]=$name." ist ". strlen($col->getValue())-$col->getLength(). " too much chars!"; 我认为这是if子句之后的一行,但是PHP在i

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

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!";
}
用括号括起来以获得正确的结果,而不是奇怪的解析器错误。我是否理解连接符号用法错误?我在类中创建多行常量(即准备好的SQL语句)时也注意到了这一点


有人知道我做错了什么吗。有什么我没有看到的吗?

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

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

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

@神秘的ツ strlen返回一个int-为什么在int上使用->呢@菲利普:对不起,刚才看到了(o)我觉得事情没那么容易!问题是为什么要分配字符串=字符串。表情。一串分散在三行,而不是一个单一的表达!我不同意这个问题过于本地化。我认为这值得一个答案,所以谢谢你关闭而不是回答家伙!干得好!这也是我所做的!这是我的第一个想法,但也没用!该死的,你是对的;-)我只是用简单的字符串而不是对象属性重新做了昨天尝试的事情。Netbeans IDE只显示了答案(strlen($col->getValue())-$col->getLength()计算为一个整数,整数后的点只是使其成为一个浮点,从而粉碎了连接!如果在if或else后面只有一行,则更容易阅读。在这种情况下,行的长度太长了,你是对的!我只是想知道为什么连接符号在这里不起作用。我同意你对风格的评判,但这不是我的问题。我知道,如果有一行以上的后续行,这是不好的风格!不,它总是不好的风格…因为它会导致类似的错误。最好永远不要这样做:-)我还能说什么,但你是对的;-)IDE总是为我们介绍bracktes。我会尽力让他们去他们承诺的地方!