2010-09-23 70 views
3

我有一個函數只返回一行作爲數組。false的計數爲1,如果是空數組,則爲false。爲什麼?

我給一個查詢作爲參數,它只會給出一行。

function getFields($query) 
{ 
    $t =& get_instance(); 
    $ret = $t->db->query($query); 
    if(!$ret)return false; 
    else if(!$ret->num_rows()) return array(); 
    else return $ret->row_array(); 
} 
$ret = getFields('query string'); 

我認爲是......

  1. 如果有錯誤的話,我可以檢查它就像如果(!$ RES)//回聲錯誤
  2. ,如果它是空的我可以檢查一樣,如果(!計數($水庫))//沒有行
  3. 一樣,我假設有一個行並繼續過程...

  1. 當出現錯誤時返回false。在if(count($ ret))給出1.
  2. 如果($ ret)條件失敗(給出false),如果我返回空數組。

//

$ret = getFields('query string'); 
if(!$fes)jerror('status,0,msg,dberror');   
if(!count($fes))jerror('status,1,msg,no rows');  
// continue execution when there atleast one row. 

這個代碼是使用AJAX調用。所以我返回一個JSON響應。

爲什麼count給1,如果空數組給出false。

我只是想用邏輯條件編碼,而不是給出更多的關係條件。只是爲了減少代碼。

我在哪裏可以得到所有這些php的BUGGING的東西,以便我可以確保我不應該最終做出像上面那樣的邏輯錯誤。

竊聽 - 在上面的句子 竊聽我稱爲不是錯誤,但 事情的錯誤我們。東西,這使我們 邏輯錯誤。



我編輯這下面的代碼包括以下與此同時,我得到這個作爲回覆通過https://stackoverflow.com/users/451672/andrew-dunn

我能做到這樣,但我還是想知道爲什麼上面的解釋

if($fes===false)jerror(); 
if(!$fes)jsuccess('status,4');  

回答

6

「爲什麼數給出1」 - 見http://docs.php.net/count

如果無功是不是數組[...] 1將被退回。

「,如果空數組給出錯誤。「 - 見http://docs.php.net/language.types.boolean#language.types.boolean.casting

當轉換爲布爾型,下面的值被認爲是FALSE:
[...]
  • 用零個元素
+0

aahh ...我是否懶得轉介文件...可能有些時候像這個時候。 hhhmm是的...謝謝。我正在用上述方法做一點分析,然後回來...... – 2010-09-23 09:27:11

2

爲什麼你不檢查是否首先是?

+0

我正要編輯我的文章以包含該內容並找到您的回覆。 – 2010-09-23 09:22:38

+0

這是上述問題的一個好建議。不錯。謝謝。 – 2010-09-23 09:27:58

2

陣列如果$myVariable不是數組,但空,然後

$count = count($myVariable); 

1

對於這種情況,我檢查變量是「數組」還是「布爾(假)」。如果輸出是數組,我使用計數,如果它不是一個數組,我將數字設置爲零。

if (is_array($myVariable)) { 
    $count = count($myVariable); 
} else { 
    $count = 0; 
} 
相關問題