我正在从数据库构建递归的php菜单函数。
我的联系:
$menu = $vt->prepare("SELECT * FROM menus");
$menu->execute(array());
$menuSonuc = $menu->fetchAll(PDO::FETCH_OBJ);这个函数生成空ul。
<li>
<a href=""><span class="sagok"></span>TITLE</a>
<ul></ul>
</li>我的问题是:如何防止这个函数中出现空ul?
echo '<ul class="anamenu">';
foreach ($menuSonuc as $menum) {
if ($menum->katID == null) {
echo '<li><a href=""><span class="asagiok"></span>' . $menum->baslik . '</a>';
$id = $menum->id;
kategoriler($menuSonuc, $id);
echo '</li>';
}
}
echo '</ul>';
function kategoriler($menuSonuc, $id)
{
echo '<ul>';
foreach ($menuSonuc as $menum) {
if ($menum->katID == $id) {
echo '<li><a href=""><span class="sagok"></span>' . $menum->baslik . '</a>';
kategoriler($menuSonuc, $menum->id);
echo '</li>';
}
}
echo '</ul>';
}发布于 2019-04-24 07:41:13
您必须添加一些检查,请参阅下面的代码
if(!empty($menuSonuc)){
echo '<ul class="anamenu">';
foreach ($menuSonuc as $menum) {
if ($menum->katID == null) {
echo '<li><a href=""><span class="asagiok"></span>' . $menum->baslik . '</a>';
$id = $menum->id;
kategoriler($menuSonuc, $id);
echo '</li>';
}
}
echo '</ul>';
}
function checkSub($menuSonuc, $id){
foreach ($menuSonuc as $menum) {
if ($menum->katID == $id) {
return true;
}
}
return false;
}
function kategoriler($menuSonuc, $id)
{
if(!empty($menuSonuc)){
$index=0;
foreach ($menuSonuc as $menum) {
if ($menum->katID == $id) {
if($index==0){
echo '<ul>';
}
echo '<li><a href="">'.((checkSub($menuSonuc, $menum->id))?'<span class="sagok"></span>':''). $menum->baslik . '</a>';
kategoriler($menuSonuc, $menum->id);
echo '</li>';
$index++;
}
}
if($index>0){
echo '</ul>';
}
}
}发布于 2019-04-24 07:37:50
如果是空的ul,这意味着$menuSonuc是空的,它不会进入foreach。您可以检查它是否为空,以防止空ul
function kategoriler($menuSonuc, $id){
if(empty($menuSonuc)){
return;
}
echo '<ul>';
foreach ($menuSonuc as $menum) {
if ($menum->katID == $id) {
echo '<li><a href=""><span class="sagok"></span>' . $menum->baslik . '</a>';
kategoriler($menuSonuc, $menum->id);
echo '</li>';
}
}
echo '</ul>';
}更新
如果您仍然得到一个空的ul,那么问题就在您正在检查$menum->katID == $id的条件下。
这意味着$menum->katID永远不会和$id一样。检查这些值,您将解决您的问题。或者给我们一个数组的例子,这样我们就可以检查它们了。
https://stackoverflow.com/questions/55824580
复制相似问题