Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 在sql中以逗号分隔的字符串计算相同的项_Php_Mysql_Sql_Codeigniter - Fatal编程技术网

Php 在sql中以逗号分隔的字符串计算相同的项

Php 在sql中以逗号分隔的字符串计算相同的项,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,嗨,我在数据库中有逗号分隔的id。 我想单独(分组)计算/百分比,并制作饼图。怎么做 例如,附加了示例数据库图片 Id COUNT 1-----------6 OR some% 15----------3 OR some% 17----------2 OR some% 2-----------2 OR some% 6-----------2 OR some% 12----------1 OR some% 使用explode()将包含逗号分隔的数字的变量转换为数组,并对数组中的项

嗨,我在数据库中有逗号分隔的id。 我想单独(分组)计算/百分比,并制作饼图。怎么做

例如,附加了示例数据库图片

Id         COUNT
1-----------6 OR some%
15----------3 OR some%
17----------2 OR some%
2-----------2 OR some%
6-----------2 OR some%
12----------1 OR some%

使用explode()将包含逗号分隔的数字的变量转换为数组,并对数组中的项目进行计数

$string = '1,2,3,4';
$array = explode(',',$string);
echo "String contains ".count($array)." items";
试试这个

假设您在
$result
然后


除了DB结构一团糟之外,您还可以尝试以下方法:

$arrData = [
    "1","15,17","1","1","15,17","1","1","1,2","6,7,12,16","9,10","2,4,6,7","14,15,16"
];

$arrCounts = [];

array_walk($arrData, function($item, $key) use (&$arrCounts)    {
    foreach(explode(",",$item) AS $val)
    {
        if (!isset($arrCounts[$val]))   $arrCounts[$val] = 0;
        $arrCounts[$val]++;
    }
});
ksort($arrCounts);
print_r($arrCounts);

你试过什么?提供代码示例。修复数据模型,使其具有合理的结构。用字符串存储数字是错误的方法。存储ID更糟糕,因为您无法定义外键关系。我不知道如何尝试。需要sql帮助您只能通过php而不是通过mysql@VijaySharma获取所有项目,然后分解并计数?您的答案是错误的,它给出的是项目总数,而不是每个项目的计数。@AnandPandey它没有错。OP想要一种以逗号分隔的字符串计算项目的方法,这就是方法。您需要首先遍历行,这应该是不言自明的。
$arrData = [
    "1","15,17","1","1","15,17","1","1","1,2","6,7,12,16","9,10","2,4,6,7","14,15,16"
];

$arrCounts = [];

array_walk($arrData, function($item, $key) use (&$arrCounts)    {
    foreach(explode(",",$item) AS $val)
    {
        if (!isset($arrCounts[$val]))   $arrCounts[$val] = 0;
        $arrCounts[$val]++;
    }
});
ksort($arrCounts);
print_r($arrCounts);