2012-12-14 262 views
1

學習PHP和我有一個問題。PHP數組元素比較

如何從數組中獲取元素並確定它是否等於靜態值?我有一個查詢語句返回集(確認數組有所有值)。

我想:

<? if($row["rowValue"] == 1) { 
    } 
?> 

我期待值是1,但它返回空值(好像我做錯了)。

+1

,你得到了什麼? – csi

+0

看到「$ row」讓我覺得你是從結果集中拉出來的......你能在代碼中得到結果集嗎?你使用mysqli嗎?只要「$ row ['rowValue']」有一個值,那麼你應該有什麼工作。 – Ben

+0

列名是否爲'rowValue'? –

回答

0

你幾乎沒有;這樣的事情應該確認它爲您:

echo "<p>Q: Does ".$row["rowValue"]." = 1?</p>"; 
if($row["rowValue"] == 1) { 
    echo "<p>A: Yes ".$row["rowValue"]." does equal 1</p>"; 
} else { 
    echo "<p>A: No, '".$row["rowValue"]."' does not equal 1</p>"; 
} 

如果仍然返回「不」,你可以嘗試做陣列的變種轉儲,像這樣觀看整個$row數組:

var_dump($row); 

這將給你詳細的數組輸出結果,你應該能夠看到你是否正在調用數組中的正確元素。

+0

行上的轉儲爲[「hasReport」] =>字符串(1)「0」。這很奇怪,因爲db中的d類型是一個整數。 – user82302124

+0

如果您將其從數據庫中提取出來,您的數組將自動假定該值是一個字符串,而不是int。如果你正在使用'if($ row [「rowValue」] == 1)'comparison(如果你比較像這樣:if($ row [「rowValue」] === 1 )'[這裏有一點點](http://stackoverflow.com/questions/80646/how-do-the-equality-double-equals-and-identity-triple-equals-comparis)),你會看看你是否將我的代碼更改爲== 0,它會在你的情況下返回true。 – Stu

+0

所以我做了一個print_r的變量。它在0時打印0,當它爲1時不打印。我不明白爲什麼。所以我將比較改爲== 0,它在0時有效。任何想法爲什麼會這樣?這是一個TINYINT,最大長度爲4. – user82302124

0

什麼是返回null

試試這個:

if($row["rowValue"] === 1) { ... } 

確保有在$row稱爲rowValue的元素。

0

也許嘗試:

<? if($row[0]["theNameOfAColumn"] == 1) { 
    } 
?> 

通常的數據庫,如行返回行[0],行[1],行[2]等