繁体   English   中英

计算查询中的值数

[英]Count number of values in query

我正在使用Drupal (7),但是我在PHP中有一个初学者的问题。

我有一个查询:

$array = array('1','2','3');
$nb_value = db_select('truc', 'tructruc')
      ->fields('truc')
      ->condition('value', $array)
      ->execute()
      ->fetchAll();

我想计算每个值存在多少次(有多少个“ 1”等)。

我尝试了这个,但是不起作用:

foreach ($array as $value) {
    if($value == '1') {
        $nb_1 = count($nb_value);
     }
     if($value == '2') {
         $nb_2 = count($nb_value);
     }
     ...
     print $nb_1
     print $nb_2
     ...

我哪里错了? 而且foreach是解决方案吗?

您可以使用以下代码:

foreach ($array as $value) {
   if($value == '1') {
      $nb_1++;
   }
   if($value == '2') {
      $nb_2++;
   }
}
...
print $nb_1
print nb_2
...

或使用以下代码(优化):

foreach ($array as $value) {
   switch($value){
      case '1':
         $nb_1++;
      break;
      case '2':
          $nb_2++;
      break;
      ...
   }
}
...
print $nb_1
print nb_2
...

您还可以使用SQL命令对数据进行计数。

<?php
    $servername = "localhost";
    $username = "dbusername";
    $password = "dbpassword";
    $dbname = "dbname";

    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    $sql = "select truc,count(truc) as cnt from tructruc group by truc";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo "Count of (".$row["truc"].")  = ".$row["cnt"]."<br>";
        }
    } else {
        echo "0 results";
    }
$conn->close();
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM