Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组计数_Php_Cakephp - Fatal编程技术网

php数组计数

php数组计数,php,cakephp,Php,Cakephp,我的sql查询有一个var转储,它返回以下内容 我想在下面的数组中计算myID=5的行数。我该怎么做呢。我正在使用php。提前谢谢 array 0 => object(stdClass)[17] public 'myID' => string '5' (length=1) public 'data' => string '123' (length=3) 1 => object(stdClass)[18]

我的sql查询有一个var转储,它返回以下内容

我想在下面的数组中计算myID=5的行数。我该怎么做呢。我正在使用php。提前谢谢

 array
  0 => 
    object(stdClass)[17]

      public 'myID' => string '5' (length=1)
      public 'data' => string '123' (length=3)
  1 => 
    object(stdClass)[18]

      public 'myID' => string '5' (length=1)
      public 'data' => string '123' (length=3)
  2 => 
    object(stdClass)[19]

      public 'relativeTypeID' => string '2' (length=1)
      public 'data' => string '256' (length=3)
  3 => 
    object(stdClass)[20]

      public 'myID' => string '4' (length=1)
      public 'data' => string '786' (length=3)

    object(stdClass)[21]

      public 'myID' => string '4' (length=1)
      public 'data' => string '786' (length=3)

对于相同的
myID
,是否始终具有相同的
data
值?换句话说,
数据
在功能上是否依赖于
myID

如果是这样,您可以让数据库为您执行以下操作:

SELECT myID, data, COUNT(*) AS cnt
FROM (your query here)
GROUP BY myID, data
这将为您提供如下结果:

myID  data   cnt
'5'   '123'  3
'2'   '256'  1
'4'   '786'  2

对于相同的
myID
,是否始终具有相同的
data
值?换句话说,
数据
在功能上是否依赖于
myID

如果是这样,您可以让数据库为您执行以下操作:

SELECT myID, data, COUNT(*) AS cnt
FROM (your query here)
GROUP BY myID, data
这将为您提供如下结果:

myID  data   cnt
'5'   '123'  3
'2'   '256'  1
'4'   '786'  2

或者,可以使用foreach语句,如:

$count = 0;

foreach($arr as $item)
{
    // Given that your item is an stdClass Object you access its property with "->"
    // if an array $item["myID"] instead
    if ( $item->myID == '4' )
    {
        $count ++;
    }
}

或者,可以使用foreach语句,如:

$count = 0;

foreach($arr as $item)
{
    // Given that your item is an stdClass Object you access its property with "->"
    // if an array $item["myID"] instead
    if ( $item->myID == '4' )
    {
        $count ++;
    }
}

您确定要执行一个查询,然后使用PHP对该查询进行计数吗?编写一个只返回您关心的元组的查询,然后查看有多少结果(如果您要使用其中的数据,否则查询本身最好是计数查询),这样更有意义。您确定要执行查询,然后使用PHP对该查询进行计数吗?编写一个只返回您关心的元组的查询,然后查看有多少个结果(如果您要使用其中的数据,否则查询本身最好是计数查询)下一票不是我的(您的解决方案在技术上是正确的,因此我认为它不值得dv)但我猜批评是这样做效率很低。在这种情况下,最好在数据库中进行计数。下一票不是我的(你的解决方案在技术上是正确的,所以我认为它不值得dv),但我猜批评是这样做效率很低。在这种情况下,最好在数据库中进行计数。我的建议是不要使用COUNT(),因为这被认为是一种不好的做法(在许多不同的情况下效率不是很高)。尝试进行计数(myID)。情况并非总是如此(我知道InnoDB中有一个快速计数()),但作为一般规则,对特定列进行计数是最安全的。忽略斜体字。我的坏朋友忘记了降价,现在我似乎无法编辑我的评论。我的建议是不要使用COUNT(),因为这被认为是一种不好的做法(在许多不同的情况下不是很有效)。尝试进行计数(myID)。情况并非总是如此(我知道InnoDB中有一个快速计数()),但作为一般规则,对特定列进行计数是最安全的。忽略斜体字。我的坏朋友忘记了降价,现在我似乎无法编辑我的评论。