【前言】
? ? ? 本文总结下PHP高级相关知识点,关于基础知识我在之前PHP基础教程详解里做过总结
?
【列表】
(一)多维数组
(二)时间日期
? ? ? ? ? (1)获取简单时间;(2)自动版权年份;(3)获得简单的时间;(4)获取时区;
? ? ? ? ? (5)创建日期;(6)案例:计算从当前距离国庆放假的天数
(三)Include文件
? ? ? ? ? ?(1)include与require举例;(2)include与require区别;(3)使用场景;
(四)文件处理
(五)文件打开/读取
(六)文件创建/写入
(七)文件上传
?
【主体】
(一)关于多维数组,上篇文章做了介绍
?
(二)时间日期
? ?JS:
? ? 先提下JS里时间日期,后来同事推荐了一个处理时间的库moment.js
class="js" name="code">var date = new Date(); console.log(date) //打印结果,例Sun Mar 11 2017 17:48:19 GMT+0800 (中国标准时间)
? ?PHP:
? ? date() 函数用于对日期或时间进行格式化
date(format,timestamp) 日期(格式,时间戳)
(1)获取简单时间
format格式参数是必需的,它们规定如何格式化日期或时间
下面列出了一些常用于日期的字符:
d - 表示月里的某天(01-31)
m - 表示月(01-12)
Y - 表示年(四位数)
1 - 表示周里的某天
其他字符,比如 "/", "." 或 "-" 也可被插入字符中,以增加其他格式。例如
<?php echo "今天是".date("Y年m-d") .date("-l"); //打印结果今天是2017年03-12-Monday ?>
(2)自动版权年份
使用 date() 函数在您的网站上自动更新版本年份,实例:
? 2010-<?php echo date("Y")?>
(3)获得简单的时间
下面是常用于时间的字符,可以以指定的格式输出当前时间
h - 带有首位零的 12 小时小时格式(hours)
i - 带有首位零的分钟(minute)
s - 带有首位零的秒00 -59(second)
a - 小写的午前和午后(am 或 pm)
<?php echo "现在具体时间是".date("h:i:s---a");?>
(4)获取时区------date_default_timezone_set()
? ?如果从代码返回的不是正确的时间,有可能是因为服务器位于其他国家或者被设置为不同时区。
因此,如果需要基于具体位置的准确时间,就必须设置要用的时区。下面的例子把时区设置为 "Asia/Shanghai",然后以指定格式输出当前时间,实例
<?php date_default_timezone_set("Asia/Shanghai"); echo "当前时间是 " . date("h:i:sa"); ?>
? ?注意:如果没有设置时区,那么一般会返回提示警告,例如
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
? ?翻译为:警告:date():依靠系统的时区设置是不安全的。 您*必须*使用date.timezone设置或date_default_timezone_set()函数。 如果您使用这些方法中的任何一种,并且仍然收到此警告,则很可能是拼写错误的时区标识符。 我们现在选择了“UTC”时区,但请设置date.timezone以选择您的时区。
(5)创建日期
? ? ? ①. mktime()? ? ? ?转换日期返回时间戳,创建日期
? ? ? date() 函数中可选的时间戳参数规定时间戳。如果未规定时间戳,将使用当前日期和时间(如上所示)
? ? ? mktime() 函数返回日期的 Unix 时间戳,而Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数
mktime(hour,minute,second,month,day,year)
?举个例子,返回2017年12月12日9点38分38秒的时间戳,然后用date()函数进行日期的格式化,代码:
<?php date_default_timezone_set("Asia/Shanghai"); $d = mktime(9,38,38,12,12,2017); echo "制作的具体时间是".date("Y-m-d h:i:s---a",$d); ?>
? ? ②.?strtotime()? ? ? 转换字符串返回时间戳,创建日期
strtotime(time,now) 预设时间(具体时间,当前)
? 下面的例子通过 strtotime() 函数创建日期和时间:
<?php $d=strtotime("10:38pm April 15 2015"); echo "创建日期是 " . date("Y-m-d h:i:sa", $d); //输出:创建日期是 2015-04-15 10:38:00am ?> <?php $d=strtotime("now"); echo "当前日期是 " . date("Y-m-d h:i:sa", $d); //输出:当前日期是 2017-03-12 10:38:00am ?>
? ?PHP在将字符串转换为日期这方面非常聪明,所以能够使用各种值:tomorrow,next Saturday,+3 Months等。但是strtotime() 并不完美,所以必须记得检查放入其中的字符串。
? ?案例:输出举例国庆放假还有几天
<?php date_default_timezone_set("Asia/Shanghai"); $d1=strtotime("October 1"); $d2=ceil(($d1-time())/60/60/24); echo "距离国庆放假还有:" . $d2 ." 天。"; ?>
代码解析:
? ? ①time()返回当前时间戳;
? ? ②ceil()函数,向上取整(注意:与四舍五入不同,只要多出一点就向上取)
Math.ceil(5.1)//取整为6 Math.ceil(5.05)//取整为6 Math.ceil(5)//取整为5
具体日期参数,我会在后面的PHP参考手册详解笔录里再做详解
?
(三)Include文件
? ? ? 服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。
? ? ? include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。如果需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话,包含文件很有用。
(1)include 和 require 语句
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
include 和 require 语句是相同的,除了错误处理方面:
语法对比:
include 'filename'; require 'filename';
错误处理方面对比:
①require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
②include 只生成警告(E_WARNING),并且脚本会继续
? ? ? 因此,如果希望继续执行,并向用户输出结果,即使包含文件已丢失,就得使用 include。
? ? ? 否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,必须始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
? ? ? 作用:包含文件省去了大量的工作。这意味着可以为所有页面创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可
(2)include实例
①直接引入
<?php include 'footer.php';?>
②嵌套引入
<div class="menu"> <?php include 'menu.php';?> </div>
③案例:引入变量(通俗理解:引入即直接将整个代码引入,可以看做写在一个文件里)
假设one.php定义了变量:
<?php $color='银色的'; $car='奔驰轿车'; ?>
?two.php引入使用
<?php include 'vars.php'; echo "我有一辆" . $color . $car "。"; ?>
?(3)require举例
require语法与include相同,这里就不列举了
(4)include与require区别
<?php include 'noFileExists.php'; echo "该文件不存在,请求资源错误"; ?>
? ?①include的持续性:用 include 语句引用某个文件并且 PHP 无法找到它,脚本会继续执行,echo 语句仍会继续执行
? ?②require的终止性:如果改用 require 语句完成相同的案例,echo 语句不会继续执行,因为在 require 语句返回严重错误之后脚本就会终止执行
(5)使用场景
? ? ? ? ?①require :当文件被应用程序请求时使用require,因为在框架、CMS或者复杂的PHP应用程序编程中,必须始终使用 require 向执行流引用关键文件。在某个关键文件意外丢失的情况下,这有助于提高应用程序的安全性和完整性。
? ? ? ? ?②include:当文件不是必需,且应用程序在文件未找到时应该继续运行时使用include。因为如果希望继续执行,并向用户输出结果,即使包含文件已丢失,就得使用 include。
?
(四)文件处理
? ? PHP拥有多种函数操作文件,包括创建、读取、上传以及编辑文件
(1)读取文件
? ?readfile() 函数读取文件,并把它写入输出缓冲
如果只是想打开一个文件并读取器内容,使用readfile()函数即可
如读取成功则 readfile() 函数返回字节数,关于字节相关知识,我在下篇文章做下介绍
案例:
<?php echo readfile("two.txt"); ?>
?这里,我的two.txt为
你好
?运行输出结果为:你好6
?注意:这里返回的字节数位6,具体我在下篇文章做详解
?
?
?
【总结】
(1)include与require的使用场景
? ?①require :当文件被应用程序请求时使用require,因为在框架、CMS或者复杂的PHP应用程序编程中,必须始终使用 require 向执行流引用关键文件。在某个关键文件意外丢失的情况下,这有助于提高应用程序的安全性和完整性。
? ?②include:当文件不是必需,且应用程序在文件未找到时应该继续运行时使用include。因为如果希望继续执行,并向用户输出结果,即使包含文件已丢失,就得使用 include。
(2)PHP操作文件失误常见错误
? ?①编辑错误的文件;②被垃圾数据填满硬盘;③意外删除文件内容
?
?
?
先写到这里,稍后完善
.