组保留的标签 余下为需要删除的标签 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; } ?>常用

window查看电脑配置 常用dos命令

dxdiag  打开directX诊断工具&#xff0c;查看电脑详细配置信息winver 检查Windows版本 wmimgmt.msc 打开Windows管理体系结构(wmi) wupdmgr Windows更新程序 ws

7月前1050

常用深度学习工作站、服务器推荐

深度学习、大模型训练主要依靠显卡&#xff0c;因此&#xff0c;显卡性能参数尤为重要目前常用的显卡4090、A6000.常用配置以单卡、双卡、四卡工作站&#xff0c;八卡服务器为主双卡4090工作站推荐CPU&

7月前1120

pycharm常用快捷键与structure视图

pycharm常用快捷键与structure视图structure视图使用进入structure视图显示类属性显示继承的内容常用快捷键structure视图使用 如下图&#xff0c;切入structure&#xff0c;

7月前740

计算机常用算法对照表整理

常用对照&#xff1a;NLPCRF算法: 中文名称条件随机场算法&#xff0c;外文名称conditional random field algorithm&#xff0c;是一种数学算法&#xff0c;是

7月前750

Zotero安装+常用插件+使用

安装 官网地址&#xff1a;https:www.zotero 安装Zotero 安装Zotero浏览器插件 Zotero Connector可以帮助我们在浏览器中将文献快速导入Zotero 选择平时用来浏览文献的浏览器

7月前2320

常用的浏览器

1常用的浏览器IE浏览器&#xff0c;火狐浏览器&#xff0c;谷歌浏览器&#xff0c;Safari浏览器&#xff08;苹果的&#xff09;,Opear浏览器&#xff08;以上为国际

7月前950

常用网页收录入口

一&#xff1a;百度网站登录入口 <?xml:namespace prefix"o" >网址&#xff1a;http:www.baidusearchurl_submit.htm

7月前930

H5页面,常用浏览器访问兼容性测试

兼容性测试 兼容测试包括:   (1)浏览器兼容测试:测试程序在不同浏览器上是否可以正常运行,功能能否正常使用;   (2)屏幕尺寸和分辨率兼容测试:测试程序在不同分辨率下能否正常显示;   (3)操作系统兼容测试:测试程序在不同的操作系统

7月前830

idea 常规推荐配置(新电脑常用)

idea 效率配置1&#x1f431;‍背景介绍&#x1f937;‍♂️ 忽略大小写&#x1f3b6;显示实时内存占用&#x1f64c;插件配置&#x1f926;‍♀️Java文件注释&#x

7月前1170

VScode 常用插件推荐,非常全面

文章目录一、主题美化PeacockMaterial ThemeMaterial Theme IconsbackgroundPower ModeRainbow CSVIndent RainbowPolacode二、检查格式化ESLintPre

7月前860

Linux常用六种提权方式

一、SUID提权SUID&#xff08;设置用户ID&#xff09;是赋予文件的一种权限&#xff0c;它会出现在文件拥有者权限的执行位上&#xff0c;具有这种权限的文件会在其执行时&#xff0c;

7月前870

Linux下20个常用Linux性能监控工具命令

此文章不作为商业用途&#xff0c;纯粹的用来学习 20个常用Linux性能监控工具命令 对于 LinuxUnix 系统管理员非常有用的并且最常用的20个命令行系统监视工具。这些命令可以在所有版本的 Linux 下使用去监控和查

7月前950

Linux常用文件权限命令详解

pwdpwd命令用于获取当前工作目录的绝对路径。使用示例&#xff1a;pwd效果如下图&#xff1a;cdcd命令用于切换工作目录。使用示例&#xff1a;cd 万猫学社效果如下图&#xff1

7月前900