PHP mysql创建树状层次结构及其计数
我对PHP和MySQL还是新手。这个问题看起来很简单,但不知何故,我无法通过正确使用foreach和array来计算递归公式来创建树状层次结构 这是表结构PHP mysql创建树状层次结构及其计数,php,mysql,count,tree,Php,Mysql,Count,Tree,我对PHP和MySQL还是新手。这个问题看起来很简单,但不知何故,我无法通过正确使用foreach和array来计算递归公式来创建树状层次结构 这是表结构 CREATE TABLE IF NOT EXISTS `table` ( `id` int(2) NOT NULL, `lecturer` varchar(50) NOT NULL, `subject` varchar(9) NOT NULL, `section` int(2) NOT NULL ) ENGINE=InnoDB
CREATE TABLE IF NOT EXISTS `table` (
`id` int(2) NOT NULL,
`lecturer` varchar(50) NOT NULL,
`subject` varchar(9) NOT NULL,
`section` int(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `table` (`id`, `lecturer`, `subject`, `section`) VALUES
(1, 'Prof A', 'info2222', 1),
(2, 'Prof A', 'info2222', 2),
(3, 'Prof A', 'info3333', 1),
(4, 'Prof A', 'info3333', 3),
(5, 'Prof B', 'info4444', 1);
这是我想要的示例输出:
=================================================
| lecturer > subject > section | count total |
=================================================
| Prof A | 4 |
| |---info2222 | 2 |
| | |---1 | 1 |
| | |---2 | 1 |
| | | |
| |---info3333 | 2 |
| |---1 | 1 |
| |---3 | 1 |
| | |
| Prof B | 1 |
| |---info4444 | 1 |
| |---1 | 1 |
=================================================
我的完整代码(当前)
类似的方法应该可以:
$query = $pdo->query("Your select...");
$arr = [];
while($data = $query->fetch()){
$arr[$data['lecturer']][$data['subject']][] = $data['section'];
}
之后,您可以在(3d)阵列上进行foreach:
要递归计算所有内容,您可以使用:
function count_recursive($array){
$c = 0;
foreach($array as $value)
if(is_array($value))
$c += count_recursive($value);
else
$c++;
return $c;
}
救命啊!如何修复此错误-->$arr=[];?解析错误:语法错误,第31行出现意外“[”。您应该更新PHP版本。$arr=array();适合您。
foreach($arr as $lecturer => $lvalues){
//echo your lecturer here
foreach($lvalues as $subject => $svalues){
//echo your subject here
foreach($svalues as $section)
//echo sour section here
}
function count_recursive($array){
$c = 0;
foreach($array as $value)
if(is_array($value))
$c += count_recursive($value);
else
$c++;
return $c;
}