count()函数可以用于获取具有特定名称的行数吗?

时间:2018-10-03 01:51:48

标签: php database mysqli

我有一个这样的表类型:

id     cat
_________

1        A

2        B

3        A

4        A

5        B

我用来查询数据库的代码是这样的:

$query="SELECT*FROM types";

$res=myslqi_query($conn,$query)

while($row=myslqi_fetch_assoc($res){



          if($row['cat']==A){

               echo count($row['cat'];   

               };

}; 

我通过count()函数得到这种类型的代码错误。

是否有可能像AAA一样显示ti才能显示像3一样的数字?

1 个答案:

答案 0 :(得分:0)

  

是否有可能像AAA一样显示ti才能显示像3一样的数字

     

只能将“ cat”字段中的值的总数显示为数字。因此,如果具有A的三个值表示结果只是数字3

尝试

<?php
$rows = [
 ['id'=>1, 'cat'=>'A'],
 ['id'=>2, 'cat'=>'B'],
 ['id'=>3, 'cat'=>'A'],
 ['id'=>4, 'cat'=>'A'],
 ['id'=>5, 'cat'=>'B']
];


print_r( array_count_values( array_column($rows,'cat') ) );

输出

Array
(
   [A] => 3
   [B] => 2
)

Sandbox

值是每个“猫”的出现次数

我不知道那是不是您想要的,但这就像魔术贴。.不是那个笑话,它只是代码。

Array Column仅返回多维数组中单个列的值,因此在此示例中,它返回

[
   'A',
   'B',
   'A',
   'A',
   'B'
]

然后对数组进行计数,对单个数组中每个值的所有出现进行计数,并将结果显示在开头。

为此,您需要数据库中数据的全部结果,因此您可以使用此while($row=myslqi_fetch_assoc($res){来获取所有数据,并在循环中将每一行添加到结果$rows[] = $row中,或者您可以执行以下操作: $rows =mysqli_fetch_all($res,MYSQLI_ASSOC)

http://php.net/manual/en/function.array-column.php

http://php.net/manual/en/function.array-count-values.php

当然,您也可以只在MySQL中完成

SELECT count(id) as total FROM types GROUP BY cat.

但无论如何...

干杯希望能帮上忙。