【问题标题】:PHP Dynamic Breadcrumbs - How To Hide Duplicates?PHP 动态面包屑 - 如何隐藏重复项?
【发布时间】:2018-09-30 14:39:09
【问题描述】:

我正在尝试删除动态面包屑中的重复项。

    //$url = substr(strstr($_SERVER["REQUEST_URI"], 'admin'), 6);
    $url = substr(strstr('/content/modal/admin/content/timeline/timeline', 'admin'), 6);
    $parse_url = substr($url, 0, strpos($url, "."));

    $array = explode("/", $parse_url);

    if($array[0] == 'index') {
        echo 'CMP';
    } else {
        echo '<a href="javascript:;" onclick="initializemodal(\'content/modal/admin/index\')">Staff</a> / ';

        $path = [];
        foreach($array as $value) {
            $path[] = $value;

            echo '<a href="javascript:;" onclick="initializemodal(\'content/modal/admin/' . implode('/', $path) . '\')">' . $value . '</a> / ';
        }
    }

这输出为:

<a href="javascript:;" onclick="initializemodal('content/modal/admin/index')">Staff</a> /
<a href="javascript:;" onclick="initializemodal('content/modal/admin/content')">content</a> /
<a href="javascript:;" onclick="initializemodal('content/modal/admin/content/timeline')">timeline</a> /
<a href="javascript:;" onclick="initializemodal('content/modal/admin/content/timeline/timeline')">timeline</a> / 

如您所见,它还列出了第 3 行的目录。第 4 行是文件本身。

我怎样才能让它保留 URL 中的重复项,但跳过链接本身?为了澄清,我怎样才能得到这个输出呢?:

<a href="javascript:;" onclick="initializemodal('content/modal/admin/index')">Staff</a> /
<a href="javascript:;" onclick="initializemodal('content/modal/admin/content')">content</a> /
<a href="javascript:;" onclick="initializemodal('content/modal/admin/content/timeline/timeline')">timeline</a> / 

【问题讨论】:

  • 您可以检查 $array 的下一个索引是否与当前值相同,然后继续跳过此循环
  • @EmtiazZahid 你的意思是if(current($array) == end($array)) continue;
  • 是的,是这样工作的吗?
  • @EmtiazZahid 不幸的是它似乎不起作用

标签: php dynamic foreach breadcrumbs


【解决方案1】:

把你的循环改成这样:

    foreach($array as $index => $value) {
        $path[] = $value;
        //skip current element if next element is identically
        if($value == $array[$index+1]) continue;

        echo '<a href="javascript:;" onclick="initializemodal(\'content/modal/admin/' . implode('/', $path) . '\')">' . $value . '</a> / ';
    }

如果下一个元素相同,它将跳过数组中的一个元素。 所以当有重复的条目(但只是直接跟随)时,只有最后一个条目(和他的完整网址)被打印出来

【讨论】:

  • 完美运行!非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多