2012-05-29 61 views
0

我有一個名爲myArr的數組。它包含字符串和整數,例如PHP:如果語句返回True而不是False

0 st ts 0 0 
st 0 0 0 0 

爲了調試php腳本,我使用了Zend Studio。調試窗口說cell [0][0]包含int 0.但問題是IF語句返回TRUE。

 for ($i = 0; $i < $rows; $i++) { 
      for ($j = 0; $j < $cols; $j++) { 
      if ($myArr[$i][$j] == 'ts' || $myArr[$i][$j] == 'st') { 
       $num++; 
      } 
      } 
     } 

更新:我在Zend Studio中以調試模式運行代碼。所以,我可以看到$ num在每次迭代中都在增加。另外,我可以看到光標在循環內

+3

您如何知道它返回true,'$ num'是否等於10? –

+0

@rudi_visser:我在調試模式下運行代碼。所以,我可以看到$ num在每次迭代中都在增加。另外,我可以看到光標在循環中。 – Gusgus

+0

在哪裏宣佈$ j? – codingbiz

回答

5

爲了滿足平等,你有兩個選擇:

if ('0' == 'tr')

OR

if (0 === 'tr')

分別是===表示檢查值和類型

我還發現這有助於您from the PHP manual

值由字符串的開頭部分給出。如果字符串以有效的數字數據開頭,則這將是使用的值。 否則,該值將爲0(零)

8

因爲0 == 'ts'true。您需要使用相等比較===。否則,PHP的類型雜耍會導致此語句評估爲true

請參閱this demo以顯示if語句爲何評估爲true

-2

任何字符串比0當一個字符串比較整數,字符串會自動轉換成整數,並在你的情況下,字符串沒有數字那麼它會進行評估,以零領先它的真實

+2

只有當它沒有數字。 –

相關問題