php - 如果 foreach 循环中的值不相等,则尝试执行某些操作,但未获得预期结果

标签 php loops recursion foreach

我有一个如下所示的数据库:

enter image description here

我可以使用以下代码从此菜单生成一棵树:

foreach($categories->result_array() as $category):
    $menu_array[$category['id']] = array('name' => $category['name'], 'parent' => $category['parent'], 'id' => $category['id']);
endforeach;

echo '<ul>';
echo $this->tasks->generateCategoriesTree(NULL, $menu_array);
echo '</ul>';

这是上面代码调用的函数:

function generateCategoriesTree($parent, $menu_array, $result = NULL)
{
    foreach($menu_array as $key => $value):
        if ($value['parent'] == $parent):
            $result .= '<li>';
            $result .= '<a href="#">' . $value['name'] . '</a>';
            $result .= '<ul>';
            $result .= $this->generateCategoriesTree($key, $menu_array);
            $result .= '</li></ul>';
          endif;
    endforeach;

    return $result;
}

它生成一棵如下所示的树:

enter image description here

我现在的问题是让父类别加粗。在我的数据库中,作为父行的行的父列为 NULL。我尝试了一些方法,例如 if ($value['parent'] !== $parent) 然后应用粗体样式,但这不起作用。老实说,我无法理解这一点。我将不胜感激你们能提供的任何帮助!

最佳答案

如果父级等于 NULL,我会将其设置为粗体。我不确定语法的使用,因为我通常使用括号作为 if 结构。

function generateCategoriesTree($parent, $menu_array, $result = NULL)
{
    foreach($menu_array as $key => $value):
        if ($value['parent'] == $parent):
            $result .= '<li>';
            if($value['parent'] == NULL):
                $result .= '<a class="BOLDCLASS" href="#">' . $value['name'] . '</a>';
            else:
                $result .= '<a href="#">' . $value['name'] . '</a>';
            endif;  
            $result .= '<ul>';
            $result .= $this->generateCategoriesTree($key, $menu_array);
            $result .= '</li></ul>';
          endif;
    endforeach;

    return $result;
}

当然,您必须使用一些样式来使类BOLDCLASS变为粗体。

关于php - 如果 foreach 循环中的值不相等,则尝试执行某些操作,但未获得预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389713/

相关文章:

Python:获取具有> = 3个奇数 "Recursively"的列表列表的数量

对递归的理解感到困惑

PHP 和 SQLite 没有这样的文件或目录?

php - Laravel 5.5 - 查询多个条件,但仅当 POST 数据等于 1 时

php - 将 session 值添加到js表单文件?

C++ 列表循环

php - 如何在 Linux 共享主机上启用 php_mbstring 和 php_exif 扩展

java - java中的数组循环

javascript - 使用循环(JavaScript)从一维数组创建二维数组

python - 使用递归在 Python 中反转堆栈