首页 > 解决方案 > PHP对象数组中的分组/排序项目

问题描述

我有一个站点地图,我正在尝试按 URL 分组并根据 URL 堆叠它们。这是站点地图https://www.sitecentre.com.au/sitemap

基本上,我需要它是动态的。我可以通过做一个案例或 if 语句来轻松做到这一点,就像我在博客部分所做的那样,但我需要它是动态的。它需要看起来像这样:

<li>Web Design
    <ul>
        <li>Nested in Web Design</li>
        <li>Nested in Web Design</li>
    </ul>
</li>

全部基于 URL。URL 是 /design 然后嵌套是 design/nested

然后下一组就像品牌化并嵌套在品牌化上,因此它的所有组织和布局都完美无缺,然后根据其他内容按字母顺序排列。

这是我们当前的 PHP:

<?php
    $pages = json_decode(file_get_contents('data/pages.json'));

    foreach ($pages as $data){
        foreach ($data as $key => $values){
            if ($values->status === '1' && $values->visible === '1' && $values->slug !== 'home'){

                if ($values->slug !== 'blog'){
                    echo '<li><a href="{{domain}}/' . $values->slug . '" title="' . $values->heading . '">' . $values->heading . '</a> - Last Updated: ' . date('d/m/Y', strtotime($values->date_modified)) . '</li>';
                } else {
                    // Get the latest blogs
                    $blogs = json_decode(file_get_contents('data/blogs.json'));

                    echo '<li><a href="{{domain}}/' . $values->slug . '" title="' . $values->heading . '">' . $values->heading . '</a> - Last Updated: ' . date('d/m/Y', strtotime($values->date_modified)) . '';
                    echo '<ul>';

                    foreach ($blogs as $data){
                        foreach ($data as $key => $values){
                            if ($values->status === '1' && $values->visible === '1'){
                                echo '<li><a href="{{domain}}/' . $values->slug . '" title="' . $values->heading . '">' . $values->heading . '</a> - Last Updated: ' . date('d/m/Y', strtotime($values->date_modified)) . '</li>';
                            }
                        }
                    }
                    echo '</li></ul>';
                }
            }
        }
    }
?>

为了完成这项工作,显然需要做一些工作,但我一生都无法确定从哪里开始。

标签: phparraysjson

解决方案


推荐阅读