2013-02-18 74 views
2

我總是認爲,連接點是組合多行字符串。但今天,我遇到了麻煩執行以下操作:字符串連接中的PHP錯誤還是我錯了?

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

我認爲這是一個單行後,如果從句,但PHP評估並沒有在這裏給出的條件是,如果即使經過2號線和3 。我需要做的周圍的一些

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

括號得到正確的結果,而不是奇怪的解析器錯誤。我理解串聯 - 符號用法錯誤嗎?在類中創建多行常量時,我​​注意到了這一點(i.E.準備好的SQL語句)。

有沒有人知道我在做什麼錯在這裏。任何一點我沒有看到?

+0

@crypticツstrlen的返回一個int - 爲什麼使用 - 在一個int>!? – Philipp 2013-02-18 15:53:19

+0

@Philipp對不起剛剛看到= o) – 2013-02-18 15:53:48

+0

我不認爲事情很簡單!問題是爲什麼字符串assigned = string。表達。串;傳播了三條線,不是一個單一的表達!我不同意這個問題太局部化了。我認爲這是值得回答的,所以感謝您關閉而不是回答他們!做得好! – wegus 2013-02-19 10:08:18

回答

3

你需要把解決這個表達式的括號:

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

這就是我所做的!這是我的第一個想法,但這也無濟於事! – wegus 2013-02-19 09:58:14

+0

該死的你是對的;-)我只是重新做了我昨天用簡單的字符串而不是對象屬性嘗試的東西。 Netbeans IDE簡單地顯示了答案(strlen($ col-> getValue()) - $ col-> getLength()的計算結果是INT和DOT,INT只是使它成爲一個浮點數,從而破壞了連接! – wegus 2013-02-19 10:50:54

4

因爲您正在使用與您的if不使用大括號的可怕做法。只有條件之後的第一行才被認爲是條件的一部分。

+1

當它只是一行後面的if或else時,它更容易閱讀。在這種情況下,線路變得很長,你是對的!我只是想知道爲什麼連接標誌在這裏不起作用。在風格上贊同你的批評我同意,但這不是我的問題。我知道,如果有更多的跟隨線,這是不好的風格! – wegus 2013-02-19 10:00:09

+0

不,總是不好的風格...因爲它會導致類似這樣的錯誤。更好的是永遠不要這樣做:-) – prodigitalson 2013-02-19 14:36:22

+0

我還能說什麼,但你是對的;-) IDE總是爲我們引入括弧。我會盡量讓他們在他們的地方 - 承諾! – wegus 2013-02-19 14:54:51