我总是认为,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语句)时注意到了相同的内容。
有谁知道我在做错了什么。我没见过的任何一点?
答案 0 :(得分:4)
因为您正在使用不使用if
大括号的可怕做法。只有条件之后的第一行才被视为条件的一部分。
答案 1 :(得分:3)
你需要在这个表达式周围加上一些:
(strlen($col->getValue())-$col->getLength())