PHP list(),each(),reset()函数应用详解

 更新时间:2016年11月25日 17:30  点击:1834
文章介绍了PHP list(),each(),reset()函数应用详解,有需要了解的朋友可以参考一下。

1.list函数

list函数是把数组中的值赋给一些变量,语法如下:

void list ( mixed $varname, mixed $varname... )


像 array() 一样,这不是真正的函数,而是语言结构。list() 用一步操作给一组变量进行赋值。

            注意: list() 仅能用于数字索引的数组并假定数字索引从 0 开始。

例1. list() 例子

代码:

 代码如下 复制代码

<?php
$arr=array(1,2,3);
list($a,$b,$c)=$arr;
echo "$a是$a,<br/>$b是$b,<br/>$c是$c.<br/>";
?>

显示为:

$a是1,
$b是2,
$c是3.      

       注意list函数的下标必须是数字,还必须是从0开始的。

2.each函数与reset函数

each 函数是返回数组中当前的键/值对并将数组指针向前移动一步,注意是一对,下面详细说明。

该函数语法:

array each ( array &$array )

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键

值为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。如果内部

指针越过了数组的末端,则 each() 返回 FALSE。这里面为什么each函数有四个下表呢?其实each函

数得到这四个下标只是方便我们操作而已,我们可以用0,1作为索引,也可以用key,value作为索引。

例2:each例子

代码:

 代码如下 复制代码

<?php
$arr=array("我是第一个值","我是第二个值","我是第三个值");
echo "当我们用0,1为索引时:<br/><br/>";
$a=each($arr);
echo "我在$arr数组中的位置为:".$a['0'];
echo "<br/>";
echo "我在$arr数组中的值为:".$a['1'];
echo "<br/><br/>";
echo "当我们用key,value为索引时:<br/><br/>";
$b=each($arr);
echo "我在$arr数组中的位置为:".$b['key'];
echo "<br/>";
echo "     我在$arr数组中的值为:".$b['value'];
?>

显示为:

当我们用0,1为索引时:
我在$arr数组中的位置为:0
我在$arr数组中的值为:我是第一个值
当我们用key,value为索引时:
我在$arr数组中的位置为:1
我在$arr数组中的值为:我是第二个值

还可用each函数与list函数结合来遍历数组,如下例:

例3:

 代码如下 复制代码
<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {
      echo "$key => $valn";
}
?>

显示为:

a => apple b => banana c => cranberry

这里要注意list函数的下标必须是数字,还必须是从0开始的。

里面的reset函数解释:

在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()。 如果是第一次遍历数组可以不用。

详细说一下reset函数:

reset 是将数组的内部指针指向第一个单元,语法为:

mixed reset ( array &$array )

reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值,如果数组为空则返回 FALSE。

可以将上面的例2与下面的例子对比一下,就很容易明白了。。。、

代码:

 代码如下 复制代码

<?php
$arr=array("我是第一个值","我是第二个值","我是第三个值");
echo "当我们用0,1为索引时:<br/><br/>";
$a=each($arr);
echo "我在$arr数组中的位置为:".$a['0'];
echo "<br/>";
echo "     我在$arr数组中的值为:".$a['1'];
echo "<br/><br/>";
echo "当我们用key,value为索引时:<br/><br/>";
reset($arr);
$b=each($arr);
echo "我在$arr数组中的位置为:".$b['key'];
echo "<br/>";
echo "     我在$arr数组中的值为:".$b['value'];
?>

显示为:

当我们用0,1为索引时:

我在$arr数组中的位置为:0
我在$arr数组中的值为:我是第一个值

当我们用key,value为索引时:

我在$arr数组中的位置为:0
我在$arr数组中的值为:我是第一个值        //注意例2中的这一行显示,就明白了

在php中要生成验证码图片是相当的简单的,因为在php中为我们提供了图形gd.dll库,要启用gd图形库我们只要在在php.ini中把php-gd前面的;去就可以了。

方法一

 代码如下 复制代码

$authnum='';
$ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$list=explode(",",$ychar);//分割函数
for($i=0;$i<4;$i++){
$randnum=rand(0,35);
$authnum.=$list[$randnum];//以数组的形式输出

方法二: 
 

 代码如下 复制代码
private function createCheckCode()
{
for(i=0;i<this->codeNum;i++)
{
number = rand(0,2);
switch(number)
{
case 0: rand_number = rand(48,57); break;//数字
case 1: rand_number = rand(65,90);break;//大写字母
case 2: rand_number = rand(97,122);break;//小写字母
}
$asc = sprintf("%c",rand_number);
$asc_number = asc_number.asc;
}
return asc_number;
}

方法三: 
 

 代码如下 复制代码
srand(microtime()*100000);//相当于计时器
$string="abcdefghigklmnopqrstuvwxyz123456789";
for($i=0;$i<4;$i++)
{
$new_number.=$string[rand(0,strlen($string)-1)];//随即的产生一个数组
}

方法四: 
 

 代码如下 复制代码

for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));//将十进制转化为十六进制
}


 

随机生成数字,字母的代码:

 

 代码如下 复制代码
<?php
//che.php
session_start();
for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));
}
$_SESSION['check_num']=$rand;
$image=imagecreatetruecolor(50,30);
$bg=imagecolorallocate($im,0,0,0);//第一次用调色板的时候,背景颜色
$te=imagecolorallocate($im,255,255,255);
imagestring($image,6,rand(0,20),rand(0,2),$rand,$te);
ob_clean();//PHP网页中因为 要生成验证码而出现 图像"http://localhost/**.php"因其本身有错无法显示
header("Content-type:image/jpeg"); imagejpeg($image);
?>

给图片画出干扰线代码: 
 

 代码如下 复制代码
for($i=0;$i<8;$i++)//画出多条线
{
$cg=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//产生随机的颜色
imageline($im,rand(10,40),0,rand(10,40),20,$cg);
}

给图片画出干扰点的代码: 
 

 代码如下 复制代码
for($i=0;$i<80;$i++)//画出多个点
{
imagesetpixel($im,rand(0,40),rand(0,20),$cg);
}

把文字写入图片代码: 
 

 代码如下 复制代码

$str=array('我','我','亲','亲');//存储显示的汉字
for($i=0;$i<4;$i++)
{
$sss.=$str[rand(0,3)];//随机显示汉字
}

//$str=iconv("gb2312","utf-8",$str); //汉字编码转化,我的好像不需要
imagettftext($im,10,0,rand(5,60),rand(5,60),$te,"simhei.ttf",$sss);//

最后我们结合实际分享一个完整的实例

 

 代码如下 复制代码
/**
 * 生成验证码图片
 *
 * @param String $word 验证码在session中的变量名称
 */
function valiCode($word='randcode'){
 Header("Content-type: image/gif");
 $border = 0; //是否要边框 1要:0不要
 $how = 4; //验证码位数
 $w = $how*15; //图片宽度
 $h = 18; //图片高度
 $fontsize = 10; //字体大小
 $alpha = "abcdefghijkmnpqrstuvwxyz"; //验证码内容1:字母
 $number = "23456789"; //验证码内容2:数字
 $randcode = ""; //验证码字符串初始化
 srand((double)microtime()*1000000); //初始化随机数种子
 $im = ImageCreate($w, $h); //创建验证图片
 /*
 * 绘制基本框架
 */
 $bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色
 ImageFill($im, 0, 0, $bgcolor); //填充背景色
 if($border)
 {
  $black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色
  ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框
 }
 
 /*
 * 逐位产生随机字符
 */
 for($i=0; $i<$how; $i++)
 {
  $alpha_or_number = mt_rand(0, 1); //字母还是数字
  $str = $alpha_or_number ? $alpha : $number;
  $which = mt_rand(0, strlen($str)-1); //取哪个字符
  $code = substr($str, $which, 1); //取字符
  $j = !$i ? 4 : $j+15; //绘字符位置
  $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色
  ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符
  $randcode .= $code; //逐位加入验证码字符串
 }
 
 /*
 * 如果需要添加干扰就将注释去掉
 *
 * 以下for()循环为绘背景干扰线代码
 */
 /* + -------------------------------绘背景干扰线 开始-------------------------------------------- + */
 for($i=0; $i<5; $i++)//绘背景干扰线
 {
  $color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色
  ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线
 }
 /* + -------------------------------绘背景干扰线 结束-------------------------------------- + */
 
 /*
 * 如果需要添加干扰就将注释去掉
 *
 * 以下for()循环为绘背景干扰点代码
 */
 /* + --------------------------------绘背景干扰点 开始------------------------------------------ + */
 
 for($i=0; $i<$how*40; $i++)//绘背景干扰点
 {
  $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色
  ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点
 }
 
 /* + --------------------------------绘背景干扰点 结束------------------------------------------ + */
 
 //把验证码字符串写入session  方便提交登录信息时检验验证码是否正确  例如:$_POST['randcode'] = $_SESSION['randcode']
 $_SESSION[$word] = $randcode;
 /*绘图结束*/
 Imagegif($im);
 ImageDestroy($im);
 /*绘图结束*/
}

调用方法也很简单把上面实例保存img.php文件,然后在要调用的页面
html页面如下

 代码如下 复制代码

<script language="javascript">
 function refresh_code()
 {
  form1.imgcode.src="verifycode.php?a="+Math.random();
 }
</script>

<form id="form1" name="form1" method="post" action="checkcode.php">
  <label for="code">验证码:</label>
  <input type="text" name="code" id="textfield" />
  <img id="imgcode" src="VerifyCode.php" alt="验证码" />
  <a href="javascript:refresh_code()">看不清?换一个</a>
  <input type="submit" name="button" id="button" value="提交" />
</form>

这要就可以实现验证码调用了。

再加个提交验证验证码是否正确

 代码如下 复制代码

<?php
session_start();
  if((strtoupper($_POST["code"])) == strtoupper(($_SESSION["VerifyCode"]))){
 print("验证码正确,");
  }else{
    print("验证码错误,");
  }

?>

这要就我们完成了从生成验证码图片和使用的整个过程了,也算是从php入门到精通验证码全部讲了。

在php中我们要对一维数组排序做起来很简单我们只要用到sort(),rsort()这样就完成了,如果要对多维数据排序的话php还没这类函数这个就需要我们自己来做了。

对于php数组排序在php中提供了很多的函数,下面我列出来,不全的大家可以补充。

sort() 函数用于对数组单元从低到高进行排序。
rsort() 函数用于对数组单元从高到低进行排序。
asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元按照键名从低到高进行排序。
krsort() 函数用于对数组单元按照键名从高到低进行排序。

不过今天我们主要是不是讲php自带的数组排序函数主要是讲自定的排序


一、冒泡排序法
  说明:找到最大的数,排列到最后面,然后继续找
 
例:

 代码如下 复制代码
$arr = array(3,5,-1,0,2);
for($i=0;$i<count($arr)-1;$i++){
    for($j=0;$j<count($arr)-1-$i;$j++){
        if($arr[$j]>$arr[$j+1]){
            $temp = $arr[$j];
            $arr[$j]=$arr[$j+1];
            $arr[$j+1]=$temp;
        }
    }
}

理解:
3,5,-1,0,2
    //从第一个数开始往后比较,如果比后面的数大则与后面的数调位置
    //第一次,3小于5,那么不变
    //第二次,5大于-1,那么变成
3,-1,5,0,2
    //第三次,5大于0
3,-1,0,5,2
    //第四次,5大于2
3,-1,0,2,5
    至此完成一次内循环,此时最后一个数完成排序,下次将不参与
3,-1,0,2,5第二次外循环开始    第一次:3大于-1
-1,3,0,2,5
    第二次:3大于0
-1,0,3,2,5
    第三次:3大于2
-1,0,2,3,5
    至此完成后面两位数的排序了,接下来类推
-1,0,2,3,5
二、选择排序法    说明:先假设第一个数就是最小的数,然后将后面的数依次与它比较,如果假设的数不是最小的数,就将它与后面的最小的数调换位置

 代码如下 复制代码
$arr=array(2,1,-1,3,0);
for($i=0;$i<count($arr)-1;$i++){
    $minval = $arr[$i];
    $minindex = $i;
    for($j=1+$i;$j<count($arr);$j++){
        if($arr[$j]<$minval){
            $minval = $arr[$j];
            $minindex = $j;
        }
    }
    $temp = $arr[$i];
    $arr[$i] = $arr[$minindex];
    $arr[$minindex] = $temp;
}

理解:
2,1,-1,3,0
    //先假设第一个数2为最小值,它后面的数依次与2做比较,寻找到最小的那个数
过程:
1小于2,那么minval=1
-1小于1,那么minval=-1
3大于-1,不变
0大于-1,不变
那么现在就找到了该数组中最小的数了为-1
将-1与2调换位置就完成第一个数的排序了
那么现在数组变成
-1,1,2,3,0
现在第一个数-1已经为有序,所以不参与比较了,往后面继续
现在假设minval=1
2大于1,不变
3大于1,不变
0小于1,那么minval=0
现在一次循环完成,调换0与1的位置完成第二个数的排序
那么现在数组变成
-1,0,2,3,1
//后面的推法与上面相同。。。
 
三、插入排序法说明:先假设一个数组中的第一个数为单独的有序数组,再将后面的一个数与它【这里随它I的增长,就变成它们了】做比较,如果后面的数比假设的数还小,则将小的那个数后移,最后将那个数移到最前面

 代码如下 复制代码
$arr=array(2,1,-1,3,0);
for($i=1;$i<count($arr);$i++){
    $insertval=$arr[$i];
    $insertindex = $i-1;
    while($insertindex>=0 && $insertval<$arr[$insertindex]){
        $arr[$insertindex+1]=$arr[$insertindex];
        $insertindex--;
    }
    $temp = $arr[$i];
    $arr[$insertindex+1]=$insertval;
}

理解:
2,1,-1,3,0
    //第一次,先保存待插入的数1为insertval,再拿 insertval 与2比较,1小于2,所以把2后移,变成如下的图
2,2,-1,3,0
    //此时2前面没有数字了,insertindex=0,所以比较完成,那么将insertval插入到寻找到的这个位置。变成如下图
1,2,-1,3,0
    //此时,1,2变成有序数组
    //第二次,先保存待插入的数-1为insertval,再拿insertval与2做比较,-1小于2,所以把2后移,变成如下图
1,2,2,3,0
    //此时,再拿insertval与1做比较,-1小于1,那么把-1后移,变成如下图(这就是一个拿待插入数与前面的有序数组比较的过程)
1,1,2,3,0
    //此时,insertindex到头了,所以将insertval插入该位置
-1,1,2,3,0
    //后面推法如上


二维数组排序函数,可以实现类似 MySQL 的 ORDER BY 效果,当数组不是从数据库取得时会有特殊应用。

 

 代码如下 复制代码

<?php
// 说明:PHP中二维数组的排序方法

 
/**
 * @package     BugFree
 * @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
 *
 *
 * Sort an two-dimension array by some level two items use array_multisort() function.
 *
 * sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)
 * @author                      Chunsheng Wang <wwccss@263.net>
 * @param  array   $ArrayData   the array to sort.
 * @param  string  $KeyName1    the first item to sort by.
 * @param  string  $SortOrder1  the order to sort by("SORT_ASC"|"SORT_DESC")
 * @param  string  $SortType1   the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")
 * @return array                sorted array.
 */
function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
    if(!is_array($ArrayData))
    {
        return $ArrayData;
    }
 
    // Get args number.
    $ArgCount = func_num_args();
 
    // Get keys to sort by and put them to SortRule array.
    for($I = 1;$I < $ArgCount;$I ++)
    {
        $Arg = func_get_arg($I);
        if(!eregi("SORT",$Arg))
        {
            $KeyNameList[] = $Arg;
            $SortRule[]    = '$'.$Arg;
        }
        else
        {
            $SortRule[]    = $Arg;
        }
    }
 
    // Get the values according to the keys and put them to array.
    foreach($ArrayData AS $Key => $Info)
    {
        foreach($KeyNameList AS $KeyName)
        {
            ${$KeyName}[$Key] = $Info[$KeyName];
        }
    }
 
    // Create the eval string and eval it.
    $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
    eval ($EvalString);
    return $ArrayData;
}
 
//################# 示例 #################
$arr = array(
    array(
        'name'      =>   '学习',
        'size'      =>   '1235',
        'type'      =>   'jpe',
        'time'      =>   '1921-11-13',
        'class'     =>   'dd',
    ),
    array(
        'name'      =>   '中国功夫',
        'size'      =>   '153',
        'type'      =>   'jpe',
        'time'      =>   '2005-11-13',
        'class'     =>   'jj',
    ),
    array(
        'name'      =>   '编程',
        'size'      =>   '35',
        'type'      =>   'gif',
        'time'      =>   '1997-11-13',
        'class'     =>   'dd',
    ),
    array(
        'name'      =>   '中国功夫',
        'size'      =>   '65',
        'type'      =>   'jpe',
        'time'      =>   '1925-02-13',
        'class'     =>   'yy',
    ),
    array(
        'name'      =>   '中国功夫',
        'size'      =>   '5',
        'type'      =>   'icon',
        'time'      =>   '1967-12-13',
        'class'     =>   'rr',
    ),
);
 
print_r($arr);
 
//注意:按照数字方式排序时 153 比 65 小
$temp = sysSortArray($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING");
 
print_r($temp);
 
?>

至于一维数组排序我们用php自带的函数就可以完全实现数据排序了,所以我们讲到的都是相对用自定函数无法完成我们需求的做法了。

关键词高亮在php中实现相对很简单,他只需要获取利用提取过来的关键词进行分词然后再利用str_replace()函数来实现替换就可以原理相对很简单。

项目结构:

开始搜索:   这里搜索关键字("大""这")

开始搜索:   这里搜索关键字("大""这")

搜索结果:  高亮显示

项目所需数据库结构:

数据库连接文件

 代码如下 复制代码
<?php
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
mysql_select_db("form", $conn);
mysql_query("set names 'gbk'");
?>

给加色的searchAndDisplayWithColor.php文件

 代码如下 复制代码

<?php
 include 'conn.php';
 ?>
 
 <table width=500 align="center">
     <form action="" method="get">
     <tr>
         <td>关键字:<input type="text" name="keyWord" />
         <input type="submit" value="搜索" /></td>
     </tr>
     </form>
 </table>
 
 <table width=500 border="0" align="center" cellpadding="5"
     cellspacing="1" bgcolor="#add3ef">
     <?php
     //关键字不为空的时候才执行相关搜索
     if($_GET['keyWord']){
     //用空格符把关键字分割开
     $key=explode(' ', $_GET[keyWord]);
     $sql="select * from message where title like '$key[0]' or title like '$key[1]' or content like '$key[0]' or content like '%$key[1]%'";
     $query=mysql_query($sql);
     while ($row=mysql_fetch_array($query)){
         //替换关键字,并且把关键字高亮显示
         $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[title]);
         $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[1]</b></font>", $row[title]);
         $row[content]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[content]);
         $row[content]=preg_replace("/$key[1]/i", "<font color=red><b>$key[1]</b></font>", $row[content]);
         ?>
 
     <tr bgcolor="#eff3ff">
         <td>标题:<font color="black"><?=$row[title]?></font> 用户:<font color="black"><?=$row[user] ?></font>
         <div align="right"><a href="preEdit.php?id=<?=$row[id]?>">编辑</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a
             href="delete.php?id=<?=$row[id]?>">删除</a></div>
         </td>
     </tr>
     <tr bgColor="#ffffff">
         <td>内容:<?=$row[content]?></td>
     </tr>
     <tr bgColor="#ffffff">
         <td>
         <div align="right">发表日期:<?=$row[lastdate]?></div>
         </td>
     </tr>
     <?php }
     }
     ?>
 </table>

说明:在这个小程序中,有一点不足之处在于,只能同时搜索两个关键字,并且中间用空格" "隔开,如果只是搜索一个关键字,如:"大"
显示的时候会出现乱码 ……^|_|^,这是由于下面代码的结果:

用空格符把关键字分割开

 代码如下 复制代码
$key=explode(' ', $_GET[keyWord]);

如果要改进的话,在这里的后面就要做一下判断了。

总结,

上面的关键词高亮只是一个非常简单的用户提交过来什么我们就对这个关键词进行了str_replace进行高亮显示了,如果要做得更好可利用dedecms分词系统进行分词再操作会好很多哦。

关于dedecms分词程序实现方法可参考

一个用PHP写的中文分词函数

http://www.111cn.net/phper/24/c8b9ff7300e56c042014a655b0bd6e34.htm

中文分词的php代码

http://www.111cn.net/phper/php-gj/39302.htm

php做的简单中文分词代码

http://www.111cn.net/phper/php-gj/38506.htm

在php+mysql中要实现分页相对很简单,只要获取page再X 每页几条记录然后再利用limit n,M就可以完美的实现分页了,本实例讲述的很清楚有需要的同学参考下。

项目结构:

运行效果:

数据库连接代码

 代码如下 复制代码

<?php
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误"); mysql_select_db("form", $conn);
mysql_query("set names 'GBK'"); //使用GBK中文编码;
//替换空格,回车键
function htmtocode($content)
{
$content = str_replace("n", "<br>", str_replace(" ", "&nbsp;", $content));
return $content;
}
?>

这里是个比较重要的分享核心函数了

 代码如下 复制代码

<?php
 
     function _PAGEFT($totle, $displaypg = 20, $url = '') {
 
         global $page, $firstcount, $pagenav, $_SERVER;
 
         $GLOBALS["displaypg"] = $displaypg;
 
        if (!$page)
             $page = 1;
         if (!$url) {
             $url = $_SERVER["REQUEST_URI"];
         }

         //URL分析:
         $parse_url = parse_url($url);
        $url_query = $parse_url["query"]; //单独取出URL的查询字串
         if ($url_query) {
            $url_query = ereg_replace("(^|&)page=$page", "", $url_query);
            $url = str_replace($parse_url["query"], $url_query, $url);
            if ($url_query)
                 $url .= "&page";
             else
                $url .= "page";
         } else {
             $url .= "?page";
         }
         $lastpg = ceil($totle / $displaypg); //最后页,也是总页数
         $page = min($lastpg, $page);
        $prepg = $page -1; //上一页
        $nextpg = ($page == $lastpg ? 0 : $page +1); //下一页
        $firstcount = ($page -1) * $displaypg;

         //开始分页导航条代码:
         $pagenav = "显示第 <B>" . ($totle ? ($firstcount +1) : 0) . "</B>-<B>" . min($firstcount + $displaypg, $totle) . "</B> 条记录,共 $totle 条记录";
 
       //如果只有一页则跳出函数:
        if ($lastpg <= 1)
            return false;

         $pagenav .= " <a href='$url=1'>首页</a> ";
         if ($prepg)
            $pagenav .= " <a href='$url=$prepg'>前页</a> ";
         else
            $pagenav .= " 前页 ";
         if ($nextpg)
             $pagenav .= " <a href='$url=$nextpg'>后页</a> ";
        else
             $pagenav .= " 后页 ";
         $pagenav .= " <a href='$url=$lastpg'>尾页</a> ";
 
        //下拉跳转列表,循环列出所有页码:
         $pagenav .= " 到第 <select name='topage' size='1' onchange='window.location="$url="+this.value'>n";
         for ($i = 1; $i <= $lastpg; $i++) {
             if ($i == $page)
                $pagenav .= "<option value='$i' selected>$i</option>n";
             else
                $pagenav .= "<option value='$i'>$i</option>n";
        }
        $pagenav .= "</select> 页,共 $lastpg 页";
     }


 include("conn.php");
 
 $result=mysql_query("SELECT * FROM `test`");
$total=mysql_num_rows($result);
 //调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。
 _PAGEFT($total,5);
 echo $pagenav;
 
 $result=mysql_query("SELECT * FROM `test` limit $firstcount,$displaypg ");
 while($row=mysql_fetch_array($result)){
 
 echo "<hr><b>".$row[name]." | ".$row[sex];
 
 }
 ?>

list.php

数据库查询记录并生成sql查询语句

 代码如下 复制代码
<?php
include("conn.php");
$pagesize=5; 5 $url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url[path];
$numq=mysql_query("SELECT * FROM `test`");
$num = mysql_num_rows($numq);
if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
if($num > $pagesize){
if($pageval<=1)$pageval=1;
echo "共 $num 条". 21 " <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
}
$SQL="SELECT * FROM `test` limit $page $pagesize ";
$query=mysql_query($SQL);
while($row=mysql_fetch_array($query)){
echo "<hr><b>".$row[name]." | ".$row[sex];
}
 ?>

分页公式:(当前页数-1)*每页条数,每页条数

 代码如下 复制代码
sql语句:select * from test_table limit ($page-1)*$pageSize,$pageSize;

总结:

不管是在什么程序开发中分开都是一个原是从X条开始取N条,这样就只读几条了,而在mysql中有limit函数来操作,如 limit  1,5 就是从第一条取5条了。

再来介绍下核心代码,这里获取分页码,再Xpagesize代码如下

 代码如下 复制代码
if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=',';
}
if($num > $pagesize){
if($pageval<=1)$pageval=1;


在mysql+php做分成相对要简单很多了,因为有了limit

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • 浅谈Java8 的foreach跳出循环break/return

    这篇文章主要介绍了Java8 的foreach跳出循环break/return,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21
  • C#中加载dll并调用其函数的实现方法

    下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#虚函数用法实例分析

    这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25