【问题标题】:count of false gives 1 and if of an empty array gives false. why?false 的计数为 1,如果为空数组,则为 false。为什么?
【发布时间】:2011-04-16 04:01:46
【问题描述】:

我有一个函数,它只返回一行作为数组。

我给出一个查询作为参数,它只会给出一行。

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. 如果有错误,我可以像 if(!$res)//echo 错误一样检查它
  2. 如果它是空的,我可以像 if(!count($res))// no rows 一样检查它
  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 东西,这样我就可以确保我最终不会犯像上面这样的逻辑错误。

BUGGING - 在上面的句子中 我所说的窃听不是错误,而是 事情困扰着我们。使我们 逻辑错误。



我编辑了以下代码以包含以下内容,同时我得到了https://stackoverflow.com/users/451672/andrew-dunn的回复@

我可以这样做,但我仍然想知道上述解释的原因

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

【问题讨论】:

    标签: php


    【解决方案1】:

    你为什么不先检查$ret === false

    【讨论】:

    • 我正要编辑我的帖子以包含该内容并找到您的回复。
    • 这是对上述问题的一个很好的建议。好的。谢谢。
    【解决方案2】:

    “为什么 count 给出 1” - 见 http://docs.php.net/count:

    如果 var 不是数组 [...] 将返回 1。

    “如果空数组给出错误。” - 见http://docs.php.net/language.types.boolean#language.types.boolean.casting:

    转换为布尔值时,以下值被视为 FALSE:
    [...]
    • 零元素的数组

    【讨论】:

    • aahh...我是不是懒得参考文档...可能有些时候像这个时候。嗯是的...谢谢。我正在对上述内容进行一些分析,然后会回来......
    【解决方案3】:

    如果$myVariable不是数组,而是空的,那么

    $count = count($myVariable);
    

    1

    对于这种情况,我检查变量是“array”还是“bool(false)”。如果输出是数组,我使用count,如果不是数组,我将number设置为零。

    if (is_array($myVariable)) {
        $count = count($myVariable);
    } else {
        $count = 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 1970-01-01
      • 2023-01-13
      • 2023-02-01
      • 2020-05-24
      • 1970-01-01
      • 2015-03-15
      • 2015-03-22
      • 1970-01-01
      相关资源
      最近更新 更多