本文实例讲述了PHP+jquery实时显示网站在线人数的方法。分享给大家供大家参考。具体分析如下:
在线人数最简单的就是直接利用js调用php,这样可以显示出有多少人访问了本站,如果要在用户未刷新页面的状态实时显示用户在线人数,我们可以利用jquery ajax来实现。
我们在一些应用中需要动态展示数据,比如当前在线人数,当前交易总额,当前汇率等等,前端页面需要实时刷新获取最新数据。这里我们将结合实例给大家介绍使用jQuery和PHP来实现动态数字展示效果。
本例假设要在页面上动态展示(无需刷新整个页面,只是局部刷新动态数字)当前在线用户数,常见在一些统计平台上应用。在HTML页面中只需定义以下结构:
复制代码 代码如下:
<p>当前在线:<span></span></p>
首先我们要定义一个动画过程,使用jQuery的animate()函数实现从一个数字到另一个数字的变换过程,以下magic_number()自定义函数将代码整合如下:
[code]function magic_number(value) {
var num = $("#number");
num.animate({count: value}, {
duration: 500,
step: function() {
num.text(String(parseInt(this.count)));
}
});
};
然后update()函数使用了jQuery的$.getJSON()向后台number.php发送了一个ajax请求,在得到PHP相应后,调用magic_number()展示最新的数字。为了能看到更好的效果,我们使用setInterval()设置代码执行的间隔时间。
复制代码 代码如下:
function update() {
$.getJSON("number.php?jsonp=?", function(data) {
magic_number(data.n);
});
};
setInterval(update, 5000); //5秒钟执行一次
update();
PHP代码部分:
实际项目中,我们会使用PHP获取数据库中的最新数据,然后通过PHP返回给前端。本例为了更好的演示,使用随机数字,最后以json格式返回给前端js,number.php代码如下:
复制代码 代码如下:
$total_data = array(
'n' => rand(0,999)
);
echo $_GET['jsonp'].'('. json_encode($total_data) . ')';
原理其实非常的简单就是利用js settimeout实现过几秒加载一个php文件从而达到了实时显示在线人数的功能了。
希望本文所述对大家的php程序设计有所帮助。
本文实例讲述了php堆排序实现原理与应用方法。分享给大家供大家参考。具体分析如下:
这里以php作为描述语言较详细讲解堆排序原理,因保证程序可读性,故不做优化,php程序中关于堆的一些概念如下:
假设n为当前数组的key则,n的父节点为 n>>1 或者 n/2(整除);n的左子节点l= n<<1 或 l=n*2,n的右子节点r=(n<<1)+1 或 r=l+1
$arr=array(1,8,7,2,3,4,6,5,9);
数组$arr的原形态结构如下:
1
/
8
7
/
/
2
3
4 6
/
5 9
heapsort($arr);print_r($arr);
排序后生成标准的小顶堆结构如下:
1
/
2
3
/
/
4 5
6 7
/
8 9
既数组:array(1,2,3,4,5,6,7,8,9):
复制代码 代码如下:
function heapsort(&$arr)
{
//求最后一个元素位
$last=count($arr);
//堆排序中通常忽略$arr[0]
array_unshift($arr,0);
//最后一个非叶子节点
$i=$last>>1;
//整理成大顶堆,最大的数整到堆顶,并将最大数和堆尾交换,并在之后的计算中忽略数组后端的最大数(last),直到堆顶(last=堆顶)
while(true)
{
adjustnode($i,$last,$arr);
if($i>1)
{
//移动节点指针,遍历所有非叶子节点
$i--;
}
else
{
//临界点last=1,既所有排序完成
if($last==1)break;
//当i为1时表示每一次的堆整理都将得到最大数(堆顶,$arr[1]),重复在根节点调整堆
swap($arr[$last],$arr[1]);
//在数组尾部按大小顺序保留最大数,定义临界点last,以免整理堆时重新打乱数组后面已排序好的元素
$last--;
}
}
//弹出第一个数组元素
array_shift($arr);
}
//整理当前树节点($n),临界点$last之后为已排序好的元素
function adjustnode($n,$last,&$arr)
{
$l=$n<<1;
//$n的左孩子位
if(!isset($arr[$l])||$l>$last) return ;
$r=$l+1;
//$n的右孩子位
//如果右孩子比左孩子大,则让父节点的右孩子比
if($r<=$last&&$arr[$r]>$arr[$l]) $l=$r;
//如果其中子节点$l比父节点$n大,则与父节点$n交换
if($arr[$l]>$arr[$n])
{
//子节点($l)的值与父节点($n)的值交换
swap($arr[$l],$arr[$n]);
//交换后父节点($n)的值($arr[$n])可能还小于原子节点($l)的子节点的值,所以还需对原子节点($l)的子节点进行调整,用递归实现
adjustnode($l,$last,$arr);
}
}
//交换两个值
function swap(&$a,&$b)
{
$a=$a ^ $b;
$b=$a ^ $b;
$a=$a ^ $b;
}
希望本文所述对大家的php程序设计有所帮助。
这个主要闲的没事给大家写一下curd的具体应用,当然这里边主要讲curd,我做的是用户的增删改查,没有用三大自动
首先
复制代码 代码如下:
class IndexAction extends Action {
public function index(){
header(“Content-Type:text/html; charset=utf-8″);
$user=M(‘user');
$list=$user->select();
$this->assign(‘user',$list);
$this->display();
}
显示所有用户 ,首页做的注册
复制代码 代码如下:
form action=”/index.php/Article/add” method=”post”>
用户名<input type=”text” name=”username”>
密码<input type=”text” name=”password”>
<input type=”submit” value=”提交”>
</form>
<volist name=”user” id=”vo”>
用户名:<input name=”username” value=”<{$vo.username}>”>
密码:<input name=”password” value=”<{$vo.password}>”>
注册IP:<input name=”cip” value=”<{$vo.cip}>”>
注册时间:<input name=”ctime” value=”<{$vo.ctime}>”>
<a href=”/index.php/Article/del/id/<{$vo.id}>”>删除</a>
<a href=”/index.php/Article/edit/id/<{$vo.id}>”>更新</a>
<br>
</volist>
然后就是我们的删除方法 很简单 思路是这样的我们获取ID删除这个ID的就可以了
复制代码 代码如下:
if($user->where(‘$_GET[‘id']')->delete())
{
$this->success(‘删除成功');
}
这样就可以了
添加用户的方法
复制代码 代码如下: