frans
- frans 赞了评论
<?php /** * 数据处理类 */ final class Data { /** * 本函数即将废弃 * @param $data * @param string $fieldPri * @param string $fieldPid * @param int $pid * @param null $sid * @param int $type 1 获得多层栏目 | 2 获得所有子栏目 3 获得父级栏目 4 判断是否为子栏目 * @param string $html * @param int $level * @return array|bool */ static public function channel($data, $fieldPri = 'cid', $fieldPid = 'pid', $pid = 0, $sid = null, $type = 2, $html = " ", $level = 1) { switch ($type) { case 1: return self::channelLevel($data, $pid, $html, $fieldPri, $fieldPid, $level); case 2: return self::channelList($data, $pid, $html, $fieldPri, $fieldPid, $level); case 3: return self::parentChannel($data, $sid, $html, $fieldPri, $fieldPid, $level); case 4: return self::isChild($data, $sid, $pid, $fieldPri, $fieldPid); } } /** * 获得所有子栏目 * @param $data 栏目数据 * @param int $pid 操作的栏目 * @param string $html 栏目名前字符 * @param string $fieldPri 表主键 * @param string $fieldPid 父id * @param int $level 等级 * @return array */ static public function channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { if (!$data) { return array(); } $arr = array(); $id = 0; foreach ($data as $v) { if ($v[$fieldPid] == $pid) { $arr[$id] = $v; $arr[$id]['level'] = $level; $arr[$id]['html'] = str_repeat($html, $level - 1); $sArr = self::channelList($data, $v[$fieldPri], $html, $fieldPri, $fieldPid, $level + 1); $arr = array_merge($arr, $sArr); $id = count($arr); } } return $arr; } /** * 返回多层栏目 * @param $data 操作的数组 * @param int $pid 一级PID的值 * @param string $html 栏目名称前缀 * @param string $fieldPri 唯一键名,如果是表则是表的主键 * @param string $fieldPid 父ID键名 * @param int $level 不需要传参数(执行时调用) * @return array */ static public function channelLevel($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { if (!$data) { return array(); } $arr = array(); foreach ($data as $v) { if ($v[$fieldPid] == $pid) { $arr[$v[$fieldPri]] = $v; $arr[$v[$fieldPri]]['html'] = str_repeat($html, $level - 1); $arr[$v[$fieldPri]]["Data"] = self::channelLevel($data, $v[$fieldPri], $html, $fieldPri, $fieldPid, $level + 1); } } return $arr; } /** * 获得所有父级栏目 * @param $data 栏目数据 * @param $sid 子栏目 * @param string $html 栏目名称前缀 * @param string $fieldPri 唯一键名,如果是表则是表的主键 * @param string $fieldPid 父ID键名 * @return array */ static public function parentChannel($data, $sid, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid') { if (!$data) { return array(); } static $arr = array(); foreach ($data as $v) { if ($v[$fieldPri] == $sid) { $arr[] = $v; $sArr = self::parentChannel($data, $v[$fieldPid], $html, $fieldPri, $fieldPid); $arr = array_merge($arr, $sArr); } } return $arr; } /** * 判断$s_cid是否是$d_cid的子栏目 * @param $data 栏目数据 * @param $sid 子栏目id * @param $pid 父栏目id * @param string $fieldPri 主键 * @param string $fieldPid 父id字段 * @return bool */ static function isChild($data, $sid, $pid, $fieldPri = 'cid', $fieldPid = 'pid') { $_data = self::channelList($data, $pid, "", $fieldPri, $fieldPid); foreach ($_data as $c) { //目标栏目为源栏目的子栏目 if ($c['cid'] == $sid) return true; } return false; } /** * 递归实现迪卡尔乘积 * @param $arr 操作的数组 * @param array $tmp * @return array */ static function descarte($arr, $tmp = array()) { static $n_arr = array(); foreach (array_shift($arr) as $v) { $tmp[] = $v; if ($arr) { self::descarte($arr, $tmp); } else { $n_arr[] = $tmp; } array_pop($tmp); } return $n_arr; } } ?>
<?php /** * 数据处理类 */ final class Data { /** * 本函数即将废弃 * @param $data * @param string $fieldPri * @param string $fieldPid * @param int $pid * @param null $sid * @param int $type 1 获得多层栏目 | 2 获得所有子栏目 3 获得父级栏目 4 判断是否为子栏目 * @param string $html * @param int $level * @return array|bool */ static public function channel($data, $fieldPri = 'cid', $fieldPid = 'pid', $pid = 0, $sid = null, $type = 2, $html = " ", $level = 1) { switch ($type) { case 1: return self::channelLevel($data, $pid, $html, $fieldPri, $fieldPid, $level); case 2: return self::channelList($data, $pid, $html, $fieldPri, $fieldPid, $level); case 3: return self::parentChannel($data, $sid, $html, $fieldPri, $fieldPid, $level); case 4: return self::isChild($data, $sid, $pid, $fieldPri, $fieldPid); } } /** * 获得所有子栏目 * @param $data 栏目数据 * @param int $pid 操作的栏目 * @param string $html 栏目名前字符 * @param string $fieldPri 表主键 * @param string $fieldPid 父id * @param int $level 等级 * @return array */ static public function channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { if (!$data) { return array(); } $arr = array(); $id = 0; foreach ($data as $v) { if ($v[$fieldPid] == $pid) { $arr[$id] = $v; $arr[$id]['level'] = $level; $arr[$id]['html'] = str_repeat($html, $level - 1); $sArr = self::channelList($data, $v[$fieldPri], $html, $fieldPri, $fieldPid, $level + 1); $arr = array_merge($arr, $sArr); $id = count($arr); } } return $arr; } /** * 返回多层栏目 * @param $data 操作的数组 * @param int $pid 一级PID的值 * @param string $html 栏目名称前缀 * @param string $fieldPri 唯一键名,如果是表则是表的主键 * @param string $fieldPid 父ID键名 * @param int $level 不需要传参数(执行时调用) * @return array */ static public function channelLevel($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { if (!$data) { return array(); } $arr = array(); foreach ($data as $v) { if ($v[$fieldPid] == $pid) { $arr[$v[$fieldPri]] = $v; $arr[$v[$fieldPri]]['html'] = str_repeat($html, $level - 1); $arr[$v[$fieldPri]]["Data"] = self::channelLevel($data, $v[$fieldPri], $html, $fieldPri, $fieldPid, $level + 1); } } return $arr; } /** * 获得所有父级栏目 * @param $data 栏目数据 * @param $sid 子栏目 * @param string $html 栏目名称前缀 * @param string $fieldPri 唯一键名,如果是表则是表的主键 * @param string $fieldPid 父ID键名 * @return array */ static public function parentChannel($data, $sid, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid') { if (!$data) { return array(); } static $arr = array(); foreach ($data as $v) { if ($v[$fieldPri] == $sid) { $arr[] = $v; $sArr = self::parentChannel($data, $v[$fieldPid], $html, $fieldPri, $fieldPid); $arr = array_merge($arr, $sArr); } } return $arr; } /** * 判断$s_cid是否是$d_cid的子栏目 * @param $data 栏目数据 * @param $sid 子栏目id * @param $pid 父栏目id * @param string $fieldPri 主键 * @param string $fieldPid 父id字段 * @return bool */ static function isChild($data, $sid, $pid, $fieldPri = 'cid', $fieldPid = 'pid') { $_data = self::channelList($data, $pid, "", $fieldPri, $fieldPid); foreach ($_data as $c) { //目标栏目为源栏目的子栏目 if ($c['cid'] == $sid) return true; } return false; } /** * 递归实现迪卡尔乘积 * @param $arr 操作的数组 * @param array $tmp * @return array */ static function descarte($arr, $tmp = array()) { static $n_arr = array(); foreach (array_shift($arr) as $v) { $tmp[] = $v; if ($arr) { self::descarte($arr, $tmp); } else { $n_arr[] = $tmp; } array_pop($tmp); } return $n_arr; } } ?>
无限极分类!
- frans 评论了教程 无限级分类的简单实例
<?php /** * 数据处理类 */ final class Data { /** * 本函数即将废弃 * @param $data * @param string $fieldPri * @param string $fieldPid * @param int $pid * @param null $sid * @param int $type 1 获得多层栏目 | 2 获得所有子栏目 3 获得父级栏目 4 判断是否为子栏目 * @param string $html * @param int $level * @return array|bool */ static public function channel($data, $fieldPri = 'cid', $fieldPid = 'pid', $pid = 0, $sid = null, $type = 2, $html = " ", $level = 1) { switch ($type) { case 1: return self::channelLevel($data, $pid, $html, $fieldPri, $fieldPid, $level); case 2: return self::channelList($data, $pid, $html, $fieldPri, $fieldPid, $level); case 3: return self::parentChannel($data, $sid, $html, $fieldPri, $fieldPid, $level); case 4: return self::isChild($data, $sid, $pid, $fieldPri, $fieldPid); } } /** * 获得所有子栏目 * @param $data 栏目数据 * @param int $pid 操作的栏目 * @param string $html 栏目名前字符 * @param string $fieldPri 表主键 * @param string $fieldPid 父id * @param int $level 等级 * @return array */ static public function channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { if (!$data) { return array(); } $arr = array(); $id = 0; foreach ($data as $v) { if ($v[$fieldPid] == $pid) { $arr[$id] = $v; $arr[$id]['level'] = $level; $arr[$id]['html'] = str_repeat($html, $level - 1); $sArr = self::channelList($data, $v[$fieldPri], $html, $fieldPri, $fieldPid, $level + 1); $arr = array_merge($arr, $sArr); $id = count($arr); } } return $arr; } /** * 返回多层栏目 * @param $data 操作的数组 * @param int $pid 一级PID的值 * @param string $html 栏目名称前缀 * @param string $fieldPri 唯一键名,如果是表则是表的主键 * @param string $fieldPid 父ID键名 * @param int $level 不需要传参数(执行时调用) * @return array */ static public function channelLevel($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { if (!$data) { return array(); } $arr = array(); foreach ($data as $v) { if ($v[$fieldPid] == $pid) { $arr[$v[$fieldPri]] = $v; $arr[$v[$fieldPri]]['html'] = str_repeat($html, $level - 1); $arr[$v[$fieldPri]]["Data"] = self::channelLevel($data, $v[$fieldPri], $html, $fieldPri, $fieldPid, $level + 1); } } return $arr; } /** * 获得所有父级栏目 * @param $data 栏目数据 * @param $sid 子栏目 * @param string $html 栏目名称前缀 * @param string $fieldPri 唯一键名,如果是表则是表的主键 * @param string $fieldPid 父ID键名 * @return array */ static public function parentChannel($data, $sid, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid') { if (!$data) { return array(); } static $arr = array(); foreach ($data as $v) { if ($v[$fieldPri] == $sid) { $arr[] = $v; $sArr = self::parentChannel($data, $v[$fieldPid], $html, $fieldPri, $fieldPid); $arr = array_merge($arr, $sArr); } } return $arr; } /** * 判断$s_cid是否是$d_cid的子栏目 * @param $data 栏目数据 * @param $sid 子栏目id * @param $pid 父栏目id * @param string $fieldPri 主键 * @param string $fieldPid 父id字段 * @return bool */ static function isChild($data, $sid, $pid, $fieldPri = 'cid', $fieldPid = 'pid') { $_data = self::channelList($data, $pid, "", $fieldPri, $fieldPid); foreach ($_data as $c) { //目标栏目为源栏目的子栏目 if ($c['cid'] == $sid) return true; } return false; } /** * 递归实现迪卡尔乘积 * @param $arr 操作的数组 * @param array $tmp * @return array */ static function descarte($arr, $tmp = array()) { static $n_arr = array(); foreach (array_shift($arr) as $v) { $tmp[] = $v; if ($arr) { self::descarte($arr, $tmp); } else { $n_arr[] = $tmp; } array_pop($tmp); } return $n_arr; } } ?>
你安装的基础 还是 高级 ?
基础配置 cookieKey
高级 init做好了肯定没错!
- frans 发表了说说一到双休就断签
- frans 发表了说说早上好!
- frans 发表了说说今天在上地铁遇到咸猪手了,妹子都往我怀里靠了
- frans 2015-03-20 已签到连续签到1天,获得了5个金钱