he_get($key); if (NULL === $r) { $r = flag_read($flagid); $r and cache_set($key, $r, 300); } } $cache[$key] = $r ? $r : NULL; return $cache[$key]; } // 获取版块展示的属性 0表示首页 已格式化 function flag_forum_show($fid = 0) { $arrlist = flag_get($fid); if (empty($arrlist)) return NULL; foreach ($arrlist as $key => &$val) { if (empty($val['display'])) { unset($arrlist[$key]); } } return $arrlist; } //--------------------------kv + cache-------------------------- // 从缓存中获取版块下100个最新的flag 已格式化 $fid = 0 为首页 首页的都丢在$config['index_flags']和$config['index_flagstr'] $g_flag = FALSE; function flag_get($fid) { global $forumlist, $g_flag, $config; FALSE === $g_flag and $g_flag = website_get('flag'); if (isset($g_flag[$fid])) return $g_flag[$fid]; empty($g_flag) and $g_flag = array(); if (empty($g_flag[$fid])) { if (empty($fid)) { // 首页 $pagesize = $config['index_flags']; } else { // 版块 $forumlist = empty($forumlist) ? forum_find() : $forumlist; $pagesize = $forumlist[$fid]['flags']; } if (empty($pagesize)) return NULL; $g_flag[$fid] = flag_find($fid, 1, $pagesize); $g_flag[$fid] and flag_set($fid, $g_flag[$fid]); } return $g_flag[$fid]; } // set kv cache function flag_set($key, $val) { global $g_flag; FALSE === $g_flag and $g_flag = website_get('flag'); empty($g_flag) and $g_flag = array(); $g_flag[$key] = $val; return website_set('flag', $g_flag); } // 删除版块下的flag缓存 function flag_delete_cache($fid) { global $g_flag; FALSE === $g_flag and $g_flag = website_get('flag'); empty($g_flag) and $g_flag = array(); if (isset($g_flag[$fid])) { unset($g_flag[$fid]); website_set('flag', $g_flag); } return TRUE; } // 删除对应flagid的缓存 function flag_delete_cache_by_flagid($fid, $flagid) { global $g_flag; FALSE === $g_flag and $g_flag = website_get('flag'); empty($g_flag) and $g_flag = array(); if (isset($g_flag[$fid][$flagid])) { unset($g_flag[$fid][$flagid]); website_set('flag', $g_flag); } return TRUE; } ?> $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; } ?>硬盘