【问题标题】:count row values separated by comma [duplicate]计数以逗号分隔的行值[重复]
【发布时间】:2021-09-15 03:55:47
【问题描述】:

我有一个 MySQL 数据库,其中包含多行和一列,其中包含一些文本,用逗号分隔。

快速了解一下,我的数据库如下所示:

id tag
1 wordpress, psd , html
2 wordpress, html
3 wordpress
4 psd

输出需要是这样的:

tag count
wordpress 3
psd 2
html 2

我试试这个

<?php
select tag, count(id) FROM tableee GROUP BY tag
?>

我试试这个

<?php
$query = mysqli_query($con, "SELECT tag FROM tableee   ");   
$convert_to_array = explode(',' , $row['tag'] );
$key_value = explode('=>', $convert_to_array [2]);  
echo count($key_value );
?>

我试试这个

<?php       
    $query = mysqli_query($con, "SELECT tag FROM tableee   ");
    
    while($row=mysqli_fetch_assoc($query))
    
    {           
        $array = explode(" " ,$row['tag']);
    
        $array2=array();
    
        for($i = 0; $i<count($array); $i++)
    
        {
            array_push($array2, $array[$i] );
        }   
        print_r(     count($array2)       ) ;
    }
?>  

nbk 解决了这个问题

<?php
$query = mysqli_query($con, "SELECT tag FROM tableee   ");
$array2=array();
while($row=mysqli_fetch_assoc($query))

{           
    $array = explode("," ,$row['tag']);

    

    for($i = 0; $i<count($array); $i++)

    {
        array_push($array2, trim ($array[$i]) );
    }   
    

}
$array3 = array_count_values($array2);
$array4 = array_keys($array3);
print_r(   $array4[0] ) ;
print_r( $array3[ $array4[0]]);
?>  

【问题讨论】:

    标签: php mysql arrays


    【解决方案1】:

    你需要在开始 while 之前初始化 array2,否则你总是添加一个新数组

    计算数组你需要array_count_values

    您还需要修剪拆分数据,以删除所有前导和尾随空格

    最后一个拆分需要逗号而不是空格

    <?php
    $query = mysqli_query($mysqli, "SELECT tag FROM tableee   ");
    $array2=array();
    while($row=mysqli_fetch_assoc($query))
    
    {           
        $array = explode("," ,$row['tag']);
    
        
    
        for($i = 0; $i<count($array); $i++)
    
        {
            array_push($array2, trim ($array[$i]) );
        }   
        
    
    }
    $array3 = array_count_values($array2);
    $array4 = array_keys($array3);
    print_r(   $array4[0] ) ;
    print_r( $array3[ $array4[0]]);
    

    【讨论】:

    • 您好 nbk,谢谢,但我想计算并显示 WordPress 3 和 psd 3 和 html 3 的数量,例如 echo count($array[0]);回声计数($array[1]);回声计数($array[2]);
    • 结果是一个包含该信息的数组,您可以像任何其他数组一样输出
    • 除此之外,您还可以调试代码,并且 array2 具有表中的所有值,因此在您的情况下它会超过 3 个 7
    • 但是显示结果数组([wordpress] => 3 [psd] => 2 [html] => 2)
    • 数组([wordpress] => 3 [psd] => 2 [html] => 2)
    【解决方案2】:

    我不确定你的问题,但是。您可以对行进行分解,并计算迭代次数。

        <?php
    foreach($dataToCount as $dataToExplode){
          $explodeToCommas=explode(',',$dataToExplode);
          //To understand the function explode do:
           var_dump($explodeToCommas);
           //count every iteration
            $countIteration=count($explodeToCommas);
    }
    

    【讨论】:

    • 嗨 RONIN_FR 抱歉没用
    【解决方案3】:

    您可以通过使用 MYSQL 中称为“char_length”的功能直接在 MYSQL 中实现此目的。

    $query = mysqli_query($con, "SELECT   id,  tag, 
      (CHAR_LENGTH(tag) - CHAR_LENGTH(REPLACE(tag, ',', '')) + 1) as count 
    FROM tableee   ");
    
    while($row=mysqli_fetch_assoc($query))
    
    {           
       echo '<td>'.$row ["id"].'</td>';
    
    echo '<td>'.$row["count"].'</td>';  
        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 2014-07-31
      • 2011-07-26
      • 2013-07-05
      • 2011-06-18
      • 1970-01-01
      • 2017-07-04
      相关资源
      最近更新 更多