【发布时间】:2019-11-17 22:51:32
【问题描述】:
我正在尝试分别做嵌套类别的主菜单和子菜单。 它给出了错误:
错误:已达到“256”的最大函数嵌套级别,正在中止! ?
我已经尝试了这个答案中的所有内容:Solution for "Fatal error: Maximum function nesting level of '100' reached, aborting!" in PHP
但对我没有用,现在我的页面不断加载并不断向页面添加黑名单点。
这是我认为我在代码中做错了但找不到位置的代码。
$sql = "SELECT * FROM categories";
$stmt =$pdo->prepare($sql);
$stmt->execute();
if($stmt->rowCount() > 0){
$rows = $stmt->fetch();
}else{
echo "Something went wrong";
}
unset($stmt);
$items = $rows;
echo "<ul>";
foreach($items as $item){
if($item['parent_id'] == 0){
echo "<li>".$item['cat_name'];
$id = $item['cat_id'];
sub($items, $id);
echo "</li>";
}
}
echo "</ul>";
function sub($items, $id){
echo "<ul>";
foreach($items as $item){
if($item['parent_id'] == $id){
echo "<li>".$item['cat_name'];
sub($items, $item['cat_id']);
echo "</li>";
}
}
echo "</ul>";
}
我在本地使用 wamp 服务器。
编辑:这是mytable结构,我使用的是php 7.2.18
CREATE TABLE IF NOT EXISTS `categories` (
`cat_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`cat_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`seo_url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`parent_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
`place` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`cat_id`),
UNIQUE KEY `unique` (`cat_name`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
这是我数据库中的数据:
INSERT INTO `categories` (`cat_id`, `cat_name`, `seo_url`, `parent_id`, `place`) VALUES
(1, 'Ana Sayfa', '#', 0, 1),
(2, 'Tutorials', '#', 0, 1),
(3, 'Java', 'java', 6, 1),
(4, 'Liferay', 'liferay', 3, 1),
(5, 'Frameworks', '#', 0, 1),
(6, 'JSF', 'jsf', 5, 1),
(7, 'Struts', 'struts', 5, 1),
(8, 'Spring', 'spring', 6, 1),
(9, 'Hibernate', 'hibernate', 6, 1),
(10, 'Webservices', '#', 0, 1),
(11, 'REST', 'rest', 10, 1),
(12, 'SOAP', 'soap', 10, 1),
(13, 'Contact', 'contact', 0, 1),
(14, 'About', 'about', 0, 1),
(15, 'TEST-TEST-TEST', 'test', 5, 1),
(16, 'TEST2', 'test2', 15, 1);
【问题讨论】:
-
你能分享
$items结构和一些示例数据吗? -
感谢您的回答,添加了您需要提问的内容。 @尼克
标签: php nested-loops