欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php整理

程序员文章站 2022-03-25 16:29:24
1. 和`require`的区别 加载失败的处理方式不同。引入不存在的文件时, 会产生警告且脚本还会继续执行, 则会导致一个致命性错误且脚本停止执行。 文件引用方式不同。 执行时需要引用的文件每次都进行执行,并且可以有返回值, 只是单纯的文件替换,没有返回值 一般放在 文件的最前面,程序在执行前会先 ......

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 //时间戳
)