php对多维数组的某个键值排序方法
php多维数组排序可以用array_multisort() 函数来处理,array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,关联(string)键名保持不变,但数字键名会被重新索引
排序顺序标志:
SORT_ASC - 按照上升顺序排序
SORT_DESC - 按照下降顺序排序
排序类型标志:
SORT_REGULAR - 将项目按照通常方法比较
SORT_NUMERIC - 将项目按照数值比较
SORT_STRING - 将项目按照字符串比较
例子 1. 对多个数组排序
代码如下 | 复制代码 |
<?php var_dump($ar1); |
本例中经过排序后,第一个数组将包含 "10","a",100,100。第二个数组将包含 1,1,"2",3。第二个数组中的项目顺序完全和第一个数组中相应的项目(100 和 100)顺序一致。
但是这些都不可以指定由那个键值进行排名了,下面我就整理了几个函数算法都不错。
示例代码
代码如下 | 复制代码 |
/** |
例子二
代码如下 | 复制代码 |
function array_sort($arr, $keys, $type = 'asc') { $keysvalue = $new_array = array(); foreach ($arr as $k => $v) { $keysvalue[$k] = $v[$keys]; if ($type == 'asc') { asort($keysvalue); arsort($keysvalue); reset($keysvalue); foreach ($keysvalue as $k => $v) { $new_array[] = $arr[$k]; return $new_array; |
例子3
代码如下 | 复制代码 |
/* |
例如有下列这样一个数组:
代码如下 | 复制代码 |
$array=array( 现在需要将这个二维数组按id升序排列,则: array_sort($array,'id','asc'); |
文章内容分页主要有两个办法:
办法一、按字数控制进行分页
按字数分页办法简单易用,但效果不好。
大致思想:首先、设定每页能容纳的最大字数;然后、计算文章内容的总字数,再由总字数和单页最大字数计算出出总页数。这样整个分页的准备工作就已经做好了。
具体到每一页的显示内容可以通过内容截取来实现。比如:页容纳500字,文章内容有2200字,那么当页面传递page=2时应该显示第501至1000之间的内容。
这种办法简单,但显示时可能会遇到麻烦,文章内容通常伴有HTML标签,进行内容切割时实现HTML标签的闭合有一定难度,如果这个工作没做好,那么分页后的效果显然也是不好的。
办法二、通过分页符进行分页
通过分页符进行分页比起第一种办法要更为理想。
大致思想:在编辑文章内容时往内容里面插入分页符(如:<hr class="page">),在文章显示时对文章内容进行分割,每一部分表示一个页的内容,通过传递参数控制显示第几页。
这种办法比较人性化,毕竟通过人工控制出来的分页截取的内容更符全我们的思维,而且可以一定程度上避免HTML标签不闭合的情形。
页显示
分页显示是将大批量的数据分批发送到客户端的重要手段之一,通常是将数据库中的结果集人为的分成一段一段的来显示。
分类
PHP分页分为列表分页和内容分页,不管是列表分页还是内容分页,基本原理是一样的,将数据分批发送到客户端。
pager.class.php
这是一个简单的PHP分页显示类,目前支持两种分页模式。一种是最简单的普通分页模式[首页] [上页] [下页] [尾页]模式,另一种是经典分页模式,即:[1][2][3][4][5][6][7][8][9][10][下一页][尾页]。
使用方法
代码如下 | 复制代码 |
require_once 'pager.class.php'; 此分页显示类的构造函数 |
当@subPage_type=1的时候为普通分页模式
如: 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
当@subPage_type=2的时候为经典分页样式
如: 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
代码如下 | 复制代码 |
pager($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2) |
上述说的PHP分页的两种类别(列表分页和内容分页),相信列表分页对大家并不陌生,对于内容分页,常用的方法是以分页符的形式(比如:<hr class="pager">)将内容分割成多段,求出总页数,用当前页码去获取分页显示列表。
代码如下 | 复制代码 |
<?php var $each_disNums;//每页显示的条目数 |
好了我们只要把它保存在一个文件,在其它地方要使用时直接调用就可以了,非常好用的一个内容或记录分页类函数哦,这也算是一个入门级别的php教程吧。
本文章给大家整理了一些PHP 5.3与5.5废弃/过期函数整理 ,希望文章对各位会带来帮助。做PHP的相信都知道,从PHP5.3开始加入了一个新的报错级别DEPRECATED,即将废弃/过期。我们一个个版本来过。
在php5.3被放弃的函数有:
代码如下 | 复制代码 |
call_user_method() (使用 call_user_func() 替代) mysql_close(); // 将不支持全部关闭, 需要改为:mysql_close($link); |
废弃以字符串传递区域设置名称. 使用 LC_* 系列常量替代.
mktime() 的 is_dst 参数. 使用新的时区处理函数替代.
PHP 5.4
代码如下 | 复制代码 |
mcrypt_generic_end() |
PHP 5.5
代码如下 | 复制代码 |
mcrypt_cbc() mcrypt_cfb() mcrypt_ecb() mcrypt_ofb() |
其中,PHP 5.3是废弃函数的开始,很多常用的以前的正则ereg全部替换preg,这个还好我以前知道。都替换了,但是魔术引号。。居然也从PHP 5.3开始弃用,PHP 5.4就移除了。这个算是PHP 5.3的一个大变动吧。
PHP 5.4开始新增了很多特性,这个大家可以网上搜索下,新增很多特殊写法。可能按照新写法,老程序员就看不太懂啦~~~
PHP 5.5怎么说呢,今天才发现的~居然把MYSQL这个扩展去掉了,建议使用MYSQLI或者PDO。。。用了5.5很多程序都会报错,提示mysql_connect即将过期~~~会看到如下错误
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in E:testnew 6.php on line 6
PHP5相对于4的跨进最大的就是类的部分,而影响更多的就是废弃这些老习惯的东西吧。虽然版本一直在升级,但是终究市场上还是大量的5.1.6-5.2.17。5.3开始废弃很多特性,导致很多程序也不敢直接上,5.5.直接秒杀了大量开源呵呵~~~
php中遍历目录下文件函数有不少,下面本文章就来介绍dir(),readdir()函数遍历目录的例子,希望这些例子能给各位朋友带来帮助哦。方法一:使用dir()遍历目录
dir()函数,成功时返回Directory类实例
PHP dir() 语法格式为:
dir(directory);//directory为需要显示文件名的目录名称,可包含路径信息
PHP dir() 用法举例:列出upload目录下的所有文件名:
代码如下 | 复制代码 |
<?php $dir = @ dir("upload");//打开upload目录;“@”可屏蔽错误信息,因有时候需要显示文件的目录内并没有文件,此时可能会报出错误,用“@”隐藏掉错误 //列举upload目录中的所有文件 while (($file = $dir->read()) !== false) { echo "文件名: " . $file . "<br />"; } $dir->close(); ?> |
输出结果为:
文件名: .
文件名: ..
文件名: logo.gif
文件名: arrow.gif
文件名: bg.gif
例子
代码如下 | 复制代码 |
function tree($dir) { $mydir = dir($dir); while($file = $mydir->read()) { if($file != '.' && $file != '..') { if(is_dir("$dir/$file")) { echo '目录名:'.$dir.DIRECTORY_SEPARATOR.'<font color="red">'.$file.'</font><br />'; tree("$dir/$file"); }else{ echo '文件名:'.$dir.DIRECTORY_SEPARATOR.$file.'<br />'; } } } $mydir->close(); } tree('./phpmyadmin'); |
方法二 使用readir()遍历目录
定义和用法
readdir() 函数返回由 opendir() 打开的目录句柄中的条目。
若成功,则该函数返回一个文件名,否则返回 false。
语法
readdir(dir_stream)
例子
代码如下 | 复制代码 |
header('content-type:text/html;charset=utf-8'); function listDir($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while($file = readdir($handle)) { if($file != '.' && $file != '..') { if(is_dir($dir.DIRECTORY_SEPARATOR.$file)) { echo '目录名:'.$dir.DIRECTORY_SEPARATOR.'<font color="red">'.$file.'</font><br />'; listDir($dir.DIRECTORY_SEPARATOR.$file); }else{ echo '文件名:'.$dir.DIRECTORY_SEPARATOR.$file.'<br />'; } } } } closedir($handle); }else{ echo '非有效目录!'; } } listDir('./phpmyadmin'); |
首先数据库的SQL如下:
代码如下 | 复制代码 |
-- -- 表的结构 `message` -- CREATE TABLE `message` ( `id` int(10) NOT NULL auto_increment, `user` varchar(25) character set utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=11 ; |
程序代码如下:
首先创建config.php,代码如下:
代码如下 | 复制代码 |
<?php $conn = @mysql_connect("localhost","root","") or die("数据库连接出错!"); |
然后创建index.php,代码如下:
代码如下 | 复制代码 |
<form action="index.php" method="post"> <table border="1" align="center" > 用 www.111cn.net 户:<input type="text" name="user" /><br> <input type="submit" name="submit" value="php教程" /></table> </form> |
接受提交数据保存到数据表中
代码如下 | 复制代码 |
<?php include("config.php"); if($_POST['submit'] && !empty($_POST['title'])&& !empty($_POST['user'])&& !empty($_POST['content'])) { $sql="insert into message (id,user,title,content,lastdate) values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())"; mysql_query($sql); //echo "成功"; }?> |
查询留言记录
代码如下 | 复制代码 |
<table width=500 border="1" align="left" cellpadding="5" cellspacing="1" bgcolor="#add3ef"> <?php $sql="select * from message order by id desc"; $query=mysql_query($sql); while($row=mysql_fetch_array($query)){ ?> <tr bgcolor="#eff3ff"> <td>标题:<?php echo $row[title];?> 用户:<?php echo $row[user];?></td> </tr> <tr bgColor="#ffffff"> <td>内容:<?php echo $row[content];?></td> </tr> <?php } ?> |
原理分析
先来看看入库吧,这个就是最基础的没有进行任何数据判断处理了
代码如下 | 复制代码 |
if($_POST['submit'] && !empty($_POST['title'])&& !empty($_POST['user'])&& !empty($_POST['content'])) { $sql="insert into message (id,user,title,content,lastdate) values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())"; mysql_query($sql); //echo "成功"; }?> |
判断用户提交过来的数据是不是不为空
$_POST['submit'] && !empty($_POST['title'] && !empty($_POST['user'])&& !empty($_POST['content'] (这里主要是介绍到所有需要填写的不为空了)
安全分析,这个很容易给大家实现sql注入了,因为没进行任何过滤处理了哦,只要网随便搜索一段注入代码就可以成功注入了,同时可以重复无限提交数据
代码如下 | 复制代码 |
{ $sql="insert into message (id,user,title,content,lastdate) values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())"; |
这一是保存到数据库,但没进行任何安全处理,一般情况我们不提倡直接把$_POST[user]入库的,是需要经过处理之后再进入变量传递进行入库哦,
查询数据库
代码如下 | 复制代码 |
$sql="select * from message order by id desc"; |
这三句代码实现了数据库查询了,其实也是非常的简单的,我们只是处理了查询并没有任务一些技术处理,如判断是否有值或一次读取多少条记录。
相关文章
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
- 本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
- Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
- 单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25