Php 在sql中以逗号分隔的字符串计算相同的项
嗨,我在数据库中有逗号分隔的id。 我想单独(分组)计算/百分比,并制作饼图。怎么做 例如,附加了示例数据库图片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 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);