PHP的DIRECTORY_SEPARATOR,PATH_SEPARATOR
DIRECTORY_SEPARATOR:路径分隔符,linux上就是‘/’ windows上是‘’
一个是:PATH_SEPARATOR
PATH_SEPARATOR:include多个路径使用,在windows下,当你要include多个路径的话,你要用”;”隔开,但在linux下就使用”:”隔开的。
这2个常量的使用能够避免不同平台的兼容性问题
所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数: 每页多少条记录($PageSize)?当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
select * from table limit ($CurrentPageID – 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。
3、简单代码
请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。
[php]
代码如下 | 复制代码 |
<?php while ( $row = mysql_fetch_row($result) ){ |
PHP分页器制作,自动生成分面页码,JS调用函数
代码如下 | 复制代码 |
<?php /**是否有上一页**/ public $pageNoList = array(); public $jsFunction ='jsFunction'; $this->totalNum = $count;//总记录数 //计算偏移 $this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true; $this->pageData = $pageData; } }else if($this->pageNo > $this->pageCount - 4){ array_push($pageList,-1); array_push($pageList,$this->pageNo -2); array_push($pageList,-1); } /*** $pageString ="<div class='pagination'><div class='page-bottom'>"; if(!empty($pageList)){ if($this->hasNextPage){ } ?> <style type="text/css"> --> |
PHP调用
代码如下 | 复制代码 |
|
代码如下 | 复制代码 |
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); |
可能很多朋友看了后不知道为什么要这样写,这样写的后面的%S是什么意思,下面我平进入话题
语法
string sprintf ( string $format [, mixed $args [, mixed $... ]] )
参数 描述
format 必需。转换格式。
args 可选。规定插到 format 字符串中 % 符号处的参数。
说明
参数format 字符串是由零个或多个指令组成: 普通字符 (除了%) 将直接复制到结果, 转换指示符, 每一种结果取其自己的参数. 这适用于 sprintf()和printf().
参数 format 是转换的格式,以百分比符号 (“%”) 开始到转换字符结束。下面的可能的 format 值:
1.一个可选的符号指示符强制一个符号(- or +)用在一个数字上. 默认情况下, 只有 – 符号用在一个数字上如果它是负值 。 这个指示符同样强制正数附加一个+符号。
2.一个可选的 填充指示符 是说什么字符将用于填充结果到正确的字符串长度. 这可能是一个空白字符或者一个0(zero character). 默认填充空白. 能指定一个替换填充字符 通过加一个单引号前缀(’)。
3.一个可选的 对齐指示符 是说 结果应该是左对齐或右对齐. 默认是右对齐; 一个 - 字符在这里将使它左对齐。
4.一个可选的数字, 一个宽度指示符 是说这种转换应该导致有多少字符(最少)。
5.一个可选的 精度指示符 在形式上是一个句点 (‘.’) 紧随其后的是一个可选的十进制数字字符串,就是说有多少十进制数字应该被显示为浮点数。 当用这个指示符在一个字符串 它作为一个中断点, 设置一个最大字符限制给字符串.
6.一个类型指示符 是说 参数数据应当被当作什么类型. 可能的类型:
% – 返回百分比符号
b – 二进制数
c – 依照 ASCII 值的字符
d – 带符号十进制数
e – 科学计数法(比如 1.5e+3)
E – 科学计数法(比如 1.2E+2). (大写字母)
u – 无符号十进制数
f – 浮点数(local settings aware)
F – 浮点数(not local settings aware)
g – shorter of %e and %f.
G – shorter of %E and %f.
o – 八进制数
s – 字符串
x – 十六进制数(小写字母)
X – 十六进制数(大写字母)
arg1, arg2, agr++ 等参数将插入到主字符串中的百分号 (%) 符号处。该函数是逐步执行的。在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。
数据定义
代码如下 | 复制代码 |
…… |
在本代码片段的第一行,定义了一个一维数组$array,第二行的时候我们格式化输出了这个数组,结果是这样的:
代码如下 | 复制代码 |
array(3) { |
现在兄弟解释一下这个输出结果,首先这个数组的输出结果的第一行,
array(3)告诉我们这是个有三个元素的数组,
首先0号元素是一个长度为3的字符串(string(3))…
篇幅关系剩下两个就不说了吧,吼吼……,这说明什么呢?这说明在PHP中如果我们不为数组指定下标的话,那么他就自己自作主张的从零开始给我们弄一个下标出来——也就是PHP数组中的键名;再看看下边的例子:
代码如下 | 复制代码 |
…… $array = array('one',”hello”=>'two','three'); var_dump($array); |
……这一次我们定义数组的时候,为第二个元素指定了下标(从此以后,在本文中就叫做键名了,下标有点含糊不清!),第二个元素指定了键名(hello),咱们再看看输出结果:
代码如下 | 复制代码 |
array(3) { |
我想你也像我一样看到了一个很智能的现象,第一个元素的键名还是0——这个我们可以理解,因为我们没有指定,而PHP数组必须要有一个键名,PHP就自作主张从零开始创立了一个键名;第二个元素的时候,我们指定了键名,PHP就尊重我们的意见用了这个键名;复杂的事情在第三个元素,
第三个元素,看起来也很简单,我们没有指定键名,PHP自动的把最大整数键名加上1,作为了键名。但是大家想过没有,如果我们把第一个元素的键名修改为“-5”,第二个元素键名不变,结果会是什么呢?我们拭目以待:
代码如下 | 复制代码 |
…… $array = array(-5=>'one',"hello"=>'two','three'); var_dump($array); …… |
如果你想当然的认为,第三个元素的键名应该是-4,那么我告诉你在PHP4.3.0之前这个想法是对的,但是之后就错了,现在也就是PHP4.3.0之后的版本你将看到如下结果:
代码如下 | 复制代码 |
array(3) { |
是的第三个元素是从0开始的,也就是不管你的负数有多小,下一个元素要是让PHP来定义键名的话,那么他就是从0开始——记住这个地方说的是,在现有的键名中如果最大的依然是个负数,不管负数有多小,PHP也是从零开始下一个键名。
PHP数组的销毁很简单,像销毁其他变量一样。
销毁整个数组:unset($array)
销毁数组中的一个元素:unset($array[-5])
例 1. unset() 示例
代码如下 | 复制代码 |
<?php // 销毁单个数组元素 // 销毁一个以上的变量 |
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
代码如下 | 复制代码 |
<?php $foo = ‘bar’; |
上边的例子将输出:
bar
如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
代码如下 | 复制代码 |
<?php $bar = ‘something’; foo($bar); something |
unset() 静态变量
严格讲,使用 unset() 销毁静态变量,只是断开了变量名和变量值之间的引用。
例子:
代码如下 | 复制代码 |
<?php foo(); 1---1 |
unset() 全局变量
同 unset() 静态变量一样,如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
试着比较如下两个例子:
代码如下 | 复制代码 |
<?php $foo = 'bar'; <?php $foo = 'bar'; |
运行第一个例子会输出:bar ,而第二个例子则不会有任何输出。
相关文章
解决:failed to open stream: No such file or directory in
本教程来给各位同学介绍failed to open stream: No such file or directory in解决办法,有需要了解的朋友可进入参考。 Warning: include_once(./include/main.i...2016-11-25- 这篇文章主要介绍了vue-cli设置publicPath小记,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-14
- 这篇文章主要介绍了IDEA如何添加配置文件到classpath中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
- 复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
- 这篇文章主要介绍了在IDEA使用中directory和package的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-13
- XPath构建于XML之上,以表示路径的方式来确定XML中元素位置,事实上并不是太常用,这里我们来简单了解JavaScript操作XPath的一些基本方法...2016-06-12
Nginx反向代理proxy_cache_path directive is not allowed错误解决方法
这篇文章主要介绍了Nginx反向代理proxy_cache_path directive is not allowed错误解决方法,需要的朋友可以参考下...2016-01-27基于xpath选择器、PyQuery、正则表达式的格式清理工具详解
这篇文章主要介绍了基于xpath选择器、PyQuery、正则表达式的格式清理工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07C#中GraphicsPath的AddString方法用法实例
这篇文章主要介绍了C#中GraphicsPath的AddString方法用法,实例分析了AddString方法添加字符串的相关使用技巧,需要的朋友可以参考下...2020-06-25- 这篇文章主要介绍了goland 设置project gopath的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了Node.js path模块,获取文件后缀名操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
- 这篇文章主要介绍了C#中GraphicsPath的Flatten方法,实例分析了Flatten方法的相关使用技巧,需要的朋友可以参考下...2020-06-25
WIN2008 R2 Active Directory 之二 部署企业中Windows Server 2008 R2额外域控制器
通过部署企业中第一台Windows Server 2008 R2域控制器已经完成了企业中Windows网络域森林的建立。但是,在企业中对于AD来讲,为了保证安全稳定运行,至少需要两台以上的物理域控制器...2016-01-27使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码
使用HtmlAgilityPack XPath表达式来抓取博客园数据使用WebClient 下载数据,HtmlAgilityPack XPath表达式解析数据,并绑定到Repeater控件...2021-09-22- 这篇文章主要介绍了Node.js 中的 fs 模块与Path模块,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-08-04
springboot打成jar后获取classpath下文件失败的解决方案
这篇文章主要介绍了使用springboot打成jar后获取classpath下文件失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-11- 这篇文章主要介绍了nodejs中内置模块fs,path常见的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
ASP.NET获取各级目录Server.MapPath详解全
ASP.NET获取各级目录Server.MapPath详解全,需要的朋友可以参考下。...2021-09-22浅析Spring配置中的classpath:与classpath*:的区别
这篇文章主要介绍了Spring配置中的"classpath:"与"classpath*:"的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-05Ubuntu上的android sdk提示 ./emulator: No such file or directory如何解决
在64位的Ubuntu上运行android sdk遇到“-bash: ./emulator: No such file or directory”的错误提示,发现是64位的Ubuntu系统上刚好缺少所依赖的32位的库。 前几...2016-09-20