首页 > 其他分享 >一组菜单数据中找到三层菜单名称一样的情况下拼接二级菜单的问题

一组菜单数据中找到三层菜单名称一样的情况下拼接二级菜单的问题

时间:2022-08-18 17:47:38浏览次数:54  
标签:菜单 value 拼接 l3 key array 三层 change

同事遇到一个一组菜单数据中找到三层菜单名称一样的情况下拼接二级菜单的问题.

比如数据是这样的

 

 最终结果应该是这样

他采用了好多次循环来解决这个问题,先循环拿到三级菜单的列表形成一个set集合,然后循环列表判断一下是不是在里面重复了,如果是则拿出来添加二级菜单名称追加到一个新的列表中,否则直接追加到新列表中.

这个实现思路有点过于复杂了.

我这里用PHP快速的验证了一下我的想法

只循环外层数组一次,将L3不断的追加进一个数组,然后判断这个位置是不是出现过重复,如果出现了,将这个索引设定为需要改变标题.

代码如下:

 

 调用如下:

 全部代码

<?php

$array = [
    ['l2' => 'testl2', 'l3' => 'testl3'],
    ['l2' => 'testl2', 'l3' => 'testl4'],
    ['l2' => 'testl3', 'l3' => 'testl5'],
    ['l2' => 'testl4', 'l3' => 'testl6'],
    ['l2' => 'testl5', 'l3' => 'testl4'],
    ['l2' => 'testl6', 'l3' => 'testl7'],
    ['l2' => 'testl7', 'l3' => 'testl8'],
    ['l2' => 'testl1', 'l3' => 'testl3'],
];

function get_five_item(array $array = [])
{
    $set_list = [];
    $need_change_key = [];
    foreach ($array as $key => $value) {
        $array[$key]['need_change'] = false;
        $is_in_set = in_array($value['l3'], $set_list) ? array_search($value['l3'], $set_list) : false;
        if ($is_in_set !== false) {
            $need_change_key[] = $is_in_set;
            $need_change_key[] = $key;
        } else {
            $set_list[$key] = $value['l3'];
        }
        if ($key == count($array) - 1) {
            foreach ($need_change_key as $change_key) {
                $array[$change_key]['need_change'] = true;
            }
        }
    }
    return $array;
}

$array = get_five_item($array);
foreach ($array as $key => $value) {
    if ($value['need_change']) {
        echo $value['l2'] . '--'. $value['l3'] . "\r\n";
    }else{
        echo $value['l3'] . "\r\n";
    }
}

 

标签:菜单,value,拼接,l3,key,array,三层,change
From: https://www.cnblogs.com/lizhaoyao/p/16599518.html

相关文章

  • a菜单点击标红,其他标黑代码
    <script>letaList=document.querySelectorAll('a');console.log(aList);for(letindex=0;index<aList.length;index++){......
  • 使用Jquery的ajaxprefilter来拼接url字符串
    目的:我们每次发请求,如果都需要拼接字符串的话,会特别浪费时间,以及不利于后期维护例如如下代码:$('#form_login').on('submit',function(e){e.preventDefault(......
  • 三层架构
    三层架构界面层(表示层):用户看的界面用户可以通过界面上的组件和服务器进行交互业务逻辑层:处理业务逻辑数据访问层:操作数据存储文件图解  登录---->接收用户的登......
  • JSTL练习和三层架构
    JSTL练习需求∶在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中<%@pageimport="com.peng.request.demo.domai......
  • 华为5700三层交换机在生产场景中做策略路由
     我们在工作中经常会遇到这样的问题,就是有两条线路,一条电信一条移动,一条ADSL一条光纤。诸如此类的。但由于有三层交换机,我们往往把默认路由就指向了某一个出口。这样我......
  • win11右键菜单怎么修改
    win11风格→win10风格:打开CMD输入如下,重启电脑即可。regadd"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"/f/vewin10风......
  • Nine---pytorch学习---拼接与拆分/运算统计
    ##pytorch学习(6)###拼接与拆分-cat-stack-split-chunk####cat()-连接给定维度中给定的张量序列-所有张量必须具有相同的形状(拼接维度除外)或为空-torch.ca......