组保留的标签 余下为需要删除的标签 unset($oldtag[$key]); } } } if (!empty($oldtag)) { $tagids = array(); foreach ($oldtag as $tagid => $tagname) { $tagids[] = $tagid; } well_oldtag_delete($tagids, $tid); } $r = well_tag_process($tid, $fid, $create_tag, $tagarr); return $r; } // 删除标签和绑定的主题 function well_oldtag_delete($tagids, $tid) { $pagesize = count($tagids); $arrlist = well_tag_find_by_tagids($tagids, 1, $pagesize); $delete_tagids = array(); // 删除 $tagids = array(); $n = 0; foreach ($arrlist as $val) { ++$n; if (1 == $val['count']) { // 只有一个主题 $delete_tagids[] = $val['tagid']; } else { $tagids[] = $val['tagid']; } } !empty($delete_tagids) and well_tag_delete($delete_tagids); $arlist = well_tag_thread_find_by_tid($tid, 1, $n); if ($arlist) { $ids = array(); foreach ($arlist as $val) $ids[] = $val['id']; well_tag_thread_delete($ids); } !empty($tagids) and well_tag_update($tagids, array('count-' => 1)); } // 标签数据处理 $arr=新提交的数组 $tagarr=保留的旧标签 function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array()) { if (empty($tid)) return ''; // 新标签处理入库 if ($new_tags) { $threadarr = array(); $tagids = array(); $i = 0; $size = 5; $n = count($tagarr); $n = $n > $size ? $size : $size - $n; foreach ($new_tags as $name) { ++$i; $name = trim($name); $name = stripslashes($name); $name = strip_tags($name); $name = str_replace(array(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $name); $name = htmlspecialchars($name, ENT_QUOTES); if ($name && $i <= $n) { // 查询标签 $read = well_tag_read_name($name); if ($read) { // 存在 count+1 $tagids[] = $read['tagid']; } else { // 入库 $arr = array('name' => $name, 'count' => 1); $tagid = well_tag_create($arr); FALSE === $tagid and message(-1, lang('create_failed')); $read = array('tagid' => $tagid, 'name' => $name); } $tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid); $threadarr[] = $tag_thread; $tagarr[$read['tagid']] = $read['name']; } } !empty($threadarr) and tag_thread_big_insert($threadarr); !empty($tagids) and well_tag_update($tagids, array('count+' => 1)); } $json = empty($tagarr) ? '' : xn_json_encode($tagarr); return $json; } ?> $v = implode(",", $v); $temp[] = $v; } // 去掉重复的字符串,也就是重复的一维数组 $temp = array_unique($temp); // 再将拆开的数组重新组装 $output = array(); foreach ($temp as $k => $v) { if ($stkeep) $k = $starr[$k]; if ($ndformat) { $temparr = explode(",", $v); foreach ($temparr as $ndkey => $ndval) $output[$k][$ndarr[$ndkey]] = $ndval; } else $output[$k] = explode(",", $v); } return $output; } // 合并二维数组 如重复 值以第一个数组值为准 function array2_merge($array1, $array2, $key = '') { if (empty($array1) || empty($array2)) return NULL; $arr = array(); foreach ($array1 as $k => $v) { isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]); } return $arr; } /* * 对二维数组排序 两个数组必须有一个相同的键值 * $array1 需要排序数组 * $array2 按照该数组key排序 * */ function array2_sort_key($array1, $array2, $key = '') { if (empty($array1) || empty($array2)) return NULL; $arr = array(); foreach ($array2 as $k => $v) { if (isset($v[$key]) && $v[$key] == $array1[$v[$key]][$key]) { $arr[$v[$key]] = $array1[$v[$key]]; } else { $arr[] = $v; } } return $arr; } ?>流程

GTA5玩家必学:YimMenu帮你提升游戏体验

YimMenu游戏增强工具:解锁GTA5无限可能的完全掌握指南 你是否曾在GTA5中遇到这些困扰:想体验稀有载具却无处获取?重复任务让游戏乐趣大打折扣?YimMenu作为一款专为GTA5设计的游戏增强工具,能帮你突破这些限制。

1月前50

一键式系统安装,让电脑新手也能玩转技术!

温馨提示:文末有资源获取方式 全新智能装机助手上线 现在推出全新升级版一键重装系统软件。无需等待,秒速安装权限,快速开始系统重装流程。 内置全系列Windows系统版本,自由选择随心

1月前110

使用XTZJ_WIN10_PE工具快速安装Win11系统全流程解析

使用XTZJ_WIN10_PE工具快速安装Win11系统全流程解析 随着Windows 11系统的普及,越来越多的用户希望体验新版系统带来的界面优化和性能提升。本文将以XTZJ_WIN10_PE工具为例,通过详细步骤解析和系统安装原理说明

7月前1470

2020抖音小店入驻流程

原文链接&#xff1a;https:blogswust15574.html 一、访问入驻后台 使用电脑浏览器打开网址https:sso.douyinlogin?servicehttps:fxg.jinritema

7月前700

Linux新手篇之系统安装(全流程超详细)

1.前置准备Linux镜像以及Vmware虚拟机有需要的小伙伴可以私信我领取哦~我们这里用Centos7作为镜像来教大家安装2.安装步骤图首先咱们打开虚拟机软件也就是我们的vmware打开后如下图所示&#xff1a;然后新建虚拟机重

7月前990

笔记本电脑开箱验货烤机流程分享

笔记本电脑开箱验货烤机流程分享 本篇文章主要从两次开箱验机的经历中总结记录一下通用的开箱验机流程&#xff0c;开箱验机的朋友们可以收藏起来。 图解流程 开箱验机步骤总结 全程录制视频&#xff0c;准备验机。 检查

7月前1420

软件测试流程五个阶段详解!看完不会你找我!

软件测试按照研发阶段一般分为5个部分&#xff1a; 单元测试、集成测试、确认测试、系统测试、验收测试&#xff0c; 下面将不同阶段需要的一些工作内容做一下梳理希望可以帮助到大家。 单元测试 一、单元测试的内容&a

7月前2000

Linux操作系统启动流程

文章目录1. Linux操作系统启动流程图2.运行流程&#xff08;1&#xff09; 加载BIOS&#xff08;2&#xff09; 读取MBR&#xff08;3&#xff09; GRUB

7月前690

U盘启动盘制作及Windows 10系统安装全流程指南

U盘启动盘制作及Windows 10系统安装全流程指南 引言 在数字化办公场景中,系统崩溃、病毒入侵或硬件升级都可能触发系统重装需求。本文将通过2000字的详细教程,手把手教你完成从U盘启动盘制作到Windows 10系统安装的全流程操

7月前820

Flask 项目 Windows 服务器部署全流程

Flask 项目 Windows 服务器部署全流程&#xff08;含本地依赖生成、打包与后台运行指南&#xff09;一、写在前面在 Windows 服务器上部署 Flask 项目时&#xff0c;常常会遇到环境兼

7月前1110