2010-09-23 69 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; 
} 
相关问题