【问题标题】:Count() returns different number of entries than var_dump()Count() 返回的条目数与 var_dump() 不同
【发布时间】:2012-04-25 19:32:15
【问题描述】:

嘿伙计们,我很累,无法弄清楚这一点,因此我们将不胜感激。

我有一个从数据库表中获取的名为 $Row 的数组。

当我运行var_dump($Row); 时,我得到以下信息:

array
  0 => string '1' (length=1)
  'id' => string '1' (length=1)
  1 => string 'erik' (length=4)
  'username' => string 'erik' (length=4)
  2 => string 'd95eb19a15301089985ad6fd6ecbf2d7' (length=32)
  'password' => string 'd95eb19a15301089985ad6fd6ecbf2d7' (length=32)
  3 => string '' (length=0)
  'email' => string '' (length=0)
  4 => string '0' (length=1)
  'date_join' => string '0' (length=1)
  5 => string '0' (length=1)
  'date_mod' => string '0' (length=1)
  6 => string '1' (length=1)
  'active' => string '1' (length=1)
  7 => string '1' (length=1)
  'admin' => string '1' (length=1)
  8 => string '0' (length=1)
  'deleted' => string '0' (length=1)

当我运行echo count($Row); 时,我得到了18 的价值。

Count 和 var_dump 紧挨着,$Row 没有修改。

问题:var_dump() 显示的 $Row 中只有 8 时,为什么 Count() 返回 18 项?我想我只是不明白count()...我检查了http://php.net/manual/en/function.count.php,但还是不明白...

编辑:我明白什么是错的,谢谢大家。另一个问题。如何删除字符串中的那些,例如我想要这种表:

array
  0 => string '1' (length=1)
  1 => string 'erik' (length=4)
  2 => string 'd95eb19a15301089985ad6fd6ecbf2d7' (length=32)
  3 => string '' (length=0)
  4 => string '0' (length=1)
  5 => string '0' (length=1)
  6 => string '1' (length=1)
  7 => string '1' (length=1)
  8 => string '0' (length=1)

* 我正在使用 mysql_fetch_array() 来检索数据并将其放入表中。

【问题讨论】:

  • 我在 var_dump 中也看到了 18 个条目。

标签: php count


【解决方案1】:

因为您的字符串也是$Row 中的值,所以它们似乎只是因为字符串字符而缩进。 这意味着

'id' => string '1' (length=1)
'username' => string 'erik' (length=4)
'password' => string 'd95eb19a15301089985ad6fd6ecbf2d7' (length=32)
// ...

也在你的数组中

【讨论】:

    【解决方案2】:

    其实你的数组里确实有18个元素:

    • 索引 08(共 9 个元素)
    • id, username, ...另外 9 个元素

    9 + 9 = 18

    如果您只想要数字索引,并假设您使用的是 MySQL:

    $Row = mysql_fetch_array($result, MYSQL_NUM)
    

    来源:http://php.net/manual/en/function.mysql-fetch-array.php

    【讨论】:

      【解决方案3】:

      因为您从您的 db 中获得了混合的关联和数字结果集(您可以使用 FETCH_ASSOC 或类似方法精确地确定您真正想要的结果集作为 dbvendor_query() 函数的参数)。

      您的数组中有 18 个元素。

      【讨论】:

      • 我只是猜测您使用的是 mysql。尝试用 mysql_fetch_assoc() 替换你的 mysql_fetch_row() 然后查看结果 ;)
      【解决方案4】:

      我认为将计数应用于此:

      0 => string '1' (length=1)
      'id' => string '1' (length=1)
      

      返回 2 而不是 1!

      0 和 id 是数组的两个不同项! 对于其他 8 个元素,这使计数返回 18

      【讨论】:

      • 你能显示表的结构,你执行的sql查询和查询执行后用于检索值的php代码吗?我的感觉是您对数组执行操作,使其结构不正确......
      【解决方案5】:

      您有混合数组整数和关联数组,并且有 18 个元素。我认为这是从mysql_fetch_array 返回的,默认情况下返回关联和数字索引数组。

      【讨论】:

        猜你喜欢
        • 2014-12-08
        • 1970-01-01
        • 2014-02-15
        • 2020-12-20
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多