php整理

自闭症网瘾萝莉.ら 提交于 2020-03-27 14:58:16

1.includerequire的区别

  • 加载失败的处理方式不同。引入不存在的文件时,include会产生警告且脚本还会继续执行,require则会导致一个致命性错误且脚本停止执行。
  • 文件引用方式不同。include()执行时需要引用的文件每次都进行执行,并且可以有返回值,require()只是单纯的文件替换,没有返回值
    require一般放在PHP文件的最前面,程序在执行前会先倒入所需要引用的文件;include一般放在程序的控制流程中,当程序执行时碰到才会引用,简化程序的执行流程。

2.常用关键字
final:用于声明方法和类,修饰类时,该类不能被继承,修饰方法时,该方法不能被覆盖。
static:主要用来修饰成员变量以及成员方法,分别为静态变量和静态方法,通过类直接调用。
global:主要使用于函数内声明变量为全局变量,在函数内部可以使用外部变量。global声明的变量只是全局变量的一个同名引用,$GLOBALS是全局变量本身。
thisselfparentthis是指向当前对象的指针,self是指向当前类的指针,parent是指向当前父类的指针。
Trait:是为PHP的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用
interface:接口是一个成员属性全部为抽象或常量的特殊抽象类,作用是:弥补PHP单继承,单继承,多实现
(1)定义的方法都是抽象方法,只需要声明,不需要实现
(2)定义的变量全部为常量(const声明)
implements:实现接口,可以多实现
abstract:修饰方法时,只有方法名,没有方法体(abstract function());只要声明抽象方法的类就是抽象类;抽象类不能实例化,可以被继承,可以看做子类实现的规范和模板;

3.PHP7新特性
(1)添加了函数的形参声明和返回类型声明
默认情况下,所有的PHP文件都处于弱类型校验模式。
PHP7增加了标量类型声明的特性,标量类型声明两种模式
- 强制模式(默认)
- 严格模式
PHP7增加了对返回类型声明的支持,返回类型声明指明了函数返回值的类型;
(2)添加了NULL合并运算符(??)是用于执行isset()检测的三元运算
(3)可以使用一个use从同一个namespace导入多个类、函数;
(4)改变了大多数错误的报告机制;

4.单引号和双引号
单引号:在单引号字符串中的变量和特殊字符的转义序列不会被替换
双引号:在双引号定义的字符串最重要的特征是变量会被解析

5.echoprintprint_rvar_dump之间的区别

  • echoprint都是语言结构,只能输出简单类型的值(字符、数字),唯一不同的是echo支持输出多参数,print只能输出一个参数
  • print_rvar_dump是函数,可用于打印数组和对象,前者只支持一个参数,后者支持多个参数并且显示信息更详细,常用于调试。
  • var_export输出或返回一个变量的字符串表示,和var_dump功能类似,但是输出的是合法的php代码

6.POSTGETPUTDELETE
基于CURD
POST => Create
GET => Read
PUT => Update
DELETE => Delete

7.用PHP写出显示客户端IP和服务器端IP的代码
echo $_SERVER['REMOTE_ADDR']. "<br/>"; //客户端
echo $_SERVER['SERVER_ADDR']. "<br/>"; //服务器端

8.用PHP打印出前一天的时间,格式例如 2006-5-10 22:21:21
echo '当前时间:'.date('Y-m-d H:i:s', time()). "<br/>";
echo '前一天时间:'.date('Y-m-d H:i:s', strtotime('-1 day')). "<br/>";

9.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

//opendir:打开目录句柄
//readdir:返回目录句柄中的条目
//closedir:关闭目录句柄
//mkdir:创建目录
//rmdir:删除目录
//is_dir:是否是目录
function read($dir = ''){
    $handle = opendir($dir);
    if ($handle){
        while ($file = readdir($handle)){
            if ($file!='.' && $file!='..'){
                $fullpath = $dir.'/'.$file;
                if (is_dir($fullpath)){
                    echo $fullpath, "<br/>";
                    read($fullpath);
                }else{
                    echo $fullpath, "<br/>";
                }
            }
        }
    }
    closedir($handle);
}

10.isset()empty()
FALSE:当转换为boolean时,以下值被认为是false
-布尔值false本身
-整型值0(零)
-浮点值0.0
-空字符串'',字符串'0',以及尚未赋值的变量
-不包含任何元素的数组
-特殊类型NULL
-所有其他值都被任务是TRUE
NULL类型的三种情况:
-通过变量赋值明确指定变量的值为NULL
-一个变量没有给任何值
-使用函数unset()将变量销毁掉
empty():当传入的变量的值为false或者null,为true,反之为false
isset():当出入的变量为null时,为true,反之为false

11.关于error
在程序开发调试错误的过程中,我们总会遇到各种各样的error,部分error会影响到代码的执行,部分则只是给出一个WARNINGNOTICE,不会影响下面代码的继续执行。
@:错误控制运算符,放在php表达式之前,该表达式可能产生的任何错误信息都被忽略掉
error_reporting(int $level):设置应该报告何种php错误,设置为0则关闭掉错误报告

12.修改SESSION的生存时间
php.ini文件中的session.gc_maxlifetime的值进行修改,然后重启,或者代码设置

13. php.ini文件中的safe_mode
safe_mode:安全模式,提供一个基本安全的共享环境,当safe_mode打开时,一些访问文件系统的函数功能会被限制,如:mkdir,touch,readdir,opendir等..

14.如何得到网址http://www.phpres.com/index.html的内容

echo file_get_contents('https://www.baidu.com');

//parse_url:解析一个URL并返回一个关联数组,包含在URL出现的各种组成部分
print_r(parse_url('http://www.phpres.com/index.html'));

15.取出文件扩展名

$str = 'dir/upload.image.jpg';
echo array_pop(explode('.', $str)), "<br/>";
echo pathinfo($str, PATHINFO_EXTENSION), "<br/>";

16.求两个日期的差值 2007-2-5 ~ 2007-3-9

$ints1 = strtotime('2007-3-5');
$ints2 = strtotime('2007-3-9');
echo ($ints2-$ints1)/(60*60*24), "<br/>";

17.将'open_door'转换成'OpenDoor',将'make_by_id'转换成'MakeById'

$str1 = 'open_door';
$str2 = 'make_by_id';
echo str_replace(' ', '', ucwords(str_replace('_', ' ', $str1))), "<br/>";
echo str_replace(' ', '', ucwords(str_replace('_', ' ', $str2))), "<br/>";

18.超全局变量
超全局变量是在全部作用域中始终可用的内置变量。
$GLOBALS:引用全局作用域中可用的全部变量
$_SERVER:服务器和执行环境的信息
$_GETHTTP GET变量
$_POSTHTTP POST变量
$_FILESHTTP 文件上传变量
$_COOKIEHTTP Cookies
$_SESSIONSession变量
$_REQUESTHTTP Request变量
$_ENV:环境变量

19.常用魔术常量
__LINE__:文件中的当前行号
__FILE_:文件的完整路径和文件名
__DIR__:文件所在的目录
__FUNCTION__:函数名称
__CLASS__:类的名称
__TRAIT__Trait的名字,包括其被声明的作用区域
__METHOD__:类的方法名
__NAMESPAC__:当前命名空间的名称

20.解析函数、析构函数,常用的魔术方法
__construct:在类被实例化的时候自动执行;
__destruct:在对象被销毁的时候自动执行;
__toString:在对象被当成字符串使用时自动执行;
__invoke:在对象被当成函数执行的时执行执行;
__clone:在克隆对象时自动执行;

数值常用函数
float ceil($num):进一取整
float floor($num):舍一取整
float round($num, $n):四舍五入,可保留n位小数

number pow(number $base, number $exp):幂运算
float sqrt(float $arg):平方根

number max($num1, $num2...):返回最大值
number min($num1, $num2...):返回最小值

int rand($min, $max):产生min到max之间的随机数
int mt_rand($min, $max):同上,但效率更高

string number_format($number, $n):以千分位分隔符方式格式化数字,并保留n位小数

字符串常用函数
--- 长度
int strlen($var):获取字符串或数字的长度(汉字默认UTF8格式,长度位3)
int mb_strlen($var):获取字符串或数字的长度(汉字长度位1)

--- 大小写
string strtolower($str):单词小写
string strtoupper($str):单词大写
string ucfirst($str):首字母大写,其他字母不变
string ucwords($str):每个单词首字母大写,其他字母不变

--- 替换
string str_replace($search, $replace, $str):将字符串str里面的serach部分换位replace字符串,区分大小写
string str_ireplace($search, $replace, $str):同上,不区分大小写
string htmlspecialchars($str):将str里面的字符转换为html实体,比如将<改为&lt;

--- 去除空格
string ltrim($str):删除左边的空格
string rtrim($str):删除右边的空格
string trim($str):删除两边的空格

--- 位置
int strpos($str, $needle):返回needle第一次在str出现的位置,区分大小写
int stripos($str, $needle):同上,不区分大小写
int strrpos($str, $needle):返回needle最后一次在str出现的位置,区分大小写
int strripos($str, $needle):同上,不区分大小写

-- 截取
string substr($str, $offset, $length):字符串截取

--- 反转
string strrev($str):字符串反转

--- 加密
string md5($str)md5加密

--- 打乱
string str_shuffle($str):随机打乱字符串,可用于产生随机验证码

--- 拆散组合
array explode($delimiter, $str):将字符串str按照delimiter分割成数组
string imploae($glue, $arr):将数组arr按照glue拼接成字符串

数组常用函数
mixed array_shift(array &$arr):将数组第一个元素移除数组并返回。将array的长度减1并将其他单元向前移动一位。所有数字键名改为从0开始计数
mixed array_unshift(array &$arr, mixed $str):在数组的开头插入一个或多个单元。将传入的单元插入到array数组的开头。

int array_push(array &$arr, mixed $v1...):将一个或多个单元压入数组的末尾(入栈),数组长度增加。返回压入后数组的长度
mixed array_pop(array &$array):弹出数组的最后一个单元,数组长度减1
mixed array_rand(array $array, $n):从数组中随机取出n个键名

current($arr):返回数组中的当前单元的值
key($arr):返回数组中的当前单元的键
prev($arr):将数组中的内部指针向前移动一位,并返回值
next($arr):将数组中的内部指针向后移动一位,并返回值
reset($arr):将数组中内部指针指向第一个单元
end($arr):将数组中的内部指针指向最后一个单元

array_keys($arr):返回数组中所有的键
array_values($arr):返回数组中所有的值
array_mpa('function', $arr):将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组

文件常用函数
int filesize($filename):返回文件大小的字节数

int filectime($filename):返回文件的创建时间的时间戳
int filemtile($filename):返回文件的最后修改时间的时间戳
int fileatime($filename):返回文件最后访问时间的时间戳
is_readable($filename):是否可读
is_writabel($filename):是否可写
is_executable($filename):是否可执行
is_file($filename):是否是文件
file_exists($filename):文件是否存在

array pathinfo($filename, PATHINFO_EXTENSION)
PAHTINFO_DIRNAME:文件夹名
PATHINFO_BASENAME:文件全称
PATHINFO_EXTENSION:文件拓展名
PATHINFO_FILENAME:文件名

bool touch($filename):创建文件
bool unlink($filename):删除文件
bool rename($oldname, $newname):重命名
bool copy($source, $des):将source文件移动到des

string file_get_contents($filename):将整个文件读入一个字符串
int file_put_contents($filename, $str):将一个字符串写入文件

string serialize($value):产生一个可存储的值的表示,成为字符串
mixed unserialize($str):从已存储的表示中创建php的值,成为反序列化

string json_encode($value):对变量进行json编码,返回json字符串
mixed json_decode($str):对json格式的字符串进行编码,转换成php变量

日期常用函数
--- 时区相关
php.ini文件中的date.timezone

string date($format, int $timestamp):格式化一个时间戳 format:Y-m-d H:i:s

int time():返回当前Unix时间戳,即1970年1月1日0时0分0秒到现在的总秒数
float microtime(true):返回当前Unix时间戳微秒数
int strtotime(string $time):将字符串转换为Unix时间戳
yesterday 昨天00:00:00
-1 day 昨天
-1 month 一个月前

array getdate(int $timestamp):可以日期、时间信息
Array
(
[seconds] => 43 //秒
[minutes] => 50 //分
[hours] => 15 //小时
[mday] => 1 //一个月中的第几天
[wday] => 4 //一周中的第几天
[mon] => 8 //月
[year] => 2019 //年
[yday] => 212 //一年中的第几天
[weekday] => Thursday //星期几的名称
[month] => August //月份名称
[0] => 1564667443 //时间戳
)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!