计算以逗号分隔的行值

时间:2021-07-03 16:15:18

标签: php mysql arrays

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

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

<头>
id 标签
1 wordpress、psd、html
2 wordpress、html
3 wordpress
4 psd

输出需要是这样的:

<头>
标签 计数
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]]);
?>  

3 个答案:

答案 0 :(得分:1)

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

计算你需要的数组array_count_values

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

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

<?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]]);

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以使用 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>';  
    
}
相关问题