在开发中,经常有一些简单的树形结构的存储,比如产品的多级分类,多级导航栏菜单等,这些物体有一个特性,就是通常会获取整棵树结构。在数据库里保存树结构的方法主要有三种,最简单的一就是通过一个father_id指向当前结构的父节点。对于这样的小结构,一般我们使用最简单的方式存储。
当要获取整棵树结构,网上一般用递归法,这种方式代码简单易懂,但是缺点是需要执行多次数据库查询,而且后面几次获取的元素数量很少甚至为0,效率很差。
其实,遇到这种情况,可以将所有的元素全部从数据库获取出来,然后再根据获取的元素father_id构建树结构,这样就可以解决执行多次数据库查询的性能损耗。下面就以我在实际项目中获取多级导航栏菜单中的函数进抛砖引玉了
/*
通过数据库获取所有元素,通过下面函数构造树形结构
*/
private function gettree($menus)
{
$id = $level = 0;
$menuobjs=array();
$tree = array();
$notrootmenu=array();
foreach($menus as $menu){
$menuobj=new stdclass();
$menuobj->menu=$menu;
$id = $menu['id'];
$level = $menu['father_id'];
$menuobj->nodes = array();
$menuobjs[$id]=$menuobj;
if ($level) {
$notrootmenu[]=$menuobj;
} else {
$tree[] = $menuobj;
}
}
foreach($notrootmenu as $menuobj){
$menu=$menuobj->menu;
$id = $menu['id'];
$level = $menu['father_id'];
$menuobjs[$level]->nodes[]=$menuobj;
}
return $tree;
}
}
本文链接http://www.cxybl.com/html/wlbc/Php/20120607/28514.html
php 获取ip:php高效获取树结构信息
时间: 2024-11-01 00:25:20
php 获取ip:php高效获取树结构信息的相关文章
js获取ip问题-js获取IP问题,在线等!!!
问题描述 js获取IP问题,在线等!!! 请教JS代码如何获取 本地的IP地址,网上的都是需要联网才能获取.如何不联网获取,谢谢!! 解决方案 超出安全访问,不用acx获取不到.就算联网得到的也是公网ip,不是电脑的本地ip地址 解决方案二: 使用acx获取是私有ip,断网就获取不了,希望断网也能获取本地私有ip, MACIPhostnamevar sMacAddr="""";var sIPAddr="""";var sDNS
安卓手机获取当前连接的WIFI相关信息
package com.lenovo.xiaoshan.test; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.content.Intent; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import and
基于PHP实现通过照片获取ip地址_php实例
在本教程中,我们将学习如何用一张照片来盗取ip地址.我的想法是通过修改.htaccess文件,将jpg文件当作php文件来解析. 下面就是我们需要向.htaccess中添加的代码: AddHandler application/x-httpd-php5 .jpg 然后将下面的代码复制到记事本中,命名为grabber.jpg <?php $fh = fopen('ip_list.txt', 'a'); fwrite($fh, $_SERVER['REMOTE_ADDR']." ")
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)_php实例
如下所示: <?php $data = '254.254.254.254'; echo ip2long($data); function getIP() { if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); elseif(getenv
python实现获取Ip归属地等信息_python
如果你有一批IP地址想要获得这些IP具体的信息,比如归属国家,城市等,最好的办法当时是调用现有的api接口来获取,我在之前就写过一篇文章,是关于我的博客被莫名攻击的时,就有获取过一批IP,攻击的时候当时是恢复业务重要,IP该封的就要封,攻击过后这个攻击者的IP信息,自己就可以分析下都来自哪里,有没有什么特征,帮助提示自己网站的安全性,今天这个脚本就是根据提供的IP获得IP归属的具体信息,脚本如下: #!/usr/bin/env python import requests import csv
PHP实现获取客户端IP并获取IP信息_php技巧
代码很简洁,功能很实用,这里就不多废话了,直接奉上: 复制代码 代码如下: <?php /** * 获取客户端IP * @param integer $type 返回类型 0:string,1:long * @return string|long */ function getClientIp($type = 0) { $ip = NULL; if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = ex
超简单的php获取ip地址信息的接口范例
通过php获取ip所属地的接口,要是自己弄一个ip库的话,会比较麻烦,而且需要经常更新,所以不现实.网上找了一些接口,发现好多都不能用了,于是自己写了一个,通过抓ip138页面来提取信息.只要它不改版,这个就能永久有效. 响应比较快,小网站用此接口完全没有问题,代码如下: <?php header("Content-type:text/html;charset=utf-8"); $ip = checkip(@$_GET['ip']); if(!$ip) { exit(
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
如下所示: <?php $data = '254.254.254.254'; echo ip2long($data); function getIP() { if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); elseif(getenv
电脑无法自动获取IP地址怎么办?
故障排查: 由于笔者公司的客户机是通过DHCP服务器自动获取IP地址的,所以出现这种提示信息应该是客户机没有分配到IP地址所致.在"运行"中键入 "cmd",进入"命令窗口",输入"ipconfig"回车,发现此台电脑目前所使用的IP地址是"169.254.0.6",这个结果证实了笔者先前 的判断,因为客户机如果四次向DHCP服务器发出请求,而未得到响应,那么系统会自动分配一个范围在169.254.0.1到