参考文章 地址 https://www.php.cn/toutiao-415522.html
一、cookie和session的区别
1.1 cookie和session都是由后端生成(php setcookie() setsession()设置时),但是cookie是保存在客户端 session是保存在服务器端,相对而言 session更安全些。
1.2 setcookie 的设置逻辑 服务器设置cookie携带返回到浏览器,浏览器下次访问header头会带有cookie信息,所以:
setcookie('a','value');print $_COOKIE['a']; 设置后第一次为空(此时服务器cookie并未返回),第二次访问调用 print $_COOKIE['a']; 返回 value
session('a','value'); 设置后即可读取,但是要注意在存储session前 通过session_start();函数开启session;
1.3 session 是依附于cookie来识别信息的,设置session后 服务器会生成一个sessionid,并携带返回到浏览器中,浏览器下次访问也会携带sessionid来实现识别用户;
二、require、require_once、include、include_once 的区别
2.1 require 和 include 都是php中引入文件的语言结构(不能算函数哦)
2.2 require 是一开始就会加载文件,且遇到错误之后,会打断程序运行,给出提示;
2.3 include 是用到的时候回加载文件,且遇到错误之后,会给出提示 继续运行程序;
2.4 require_once 和 include_once 除了包含上面各自特征外,还有一个不会重复加载的特性,即如果文件已经引入过一次,则不会重复引入。
三、合并数组的常见方法都有哪些?有什么区别?
3.1 合并数组的方法有 array_merge函数,+ 号,array_merge_recursive();三种方法
3.2 array_merge函数,如果键名为字符串且相同,则会覆盖前一个数组参数的值,如果为数字键名,则直接追加生成新的数字键名。
3.3 array_merge_recursive函数,字符串键名不会覆盖相同键名的值,而是合并成一个数组,数字键名和array_merge一致追加,如 :
var_dump(array_merge_recursive(["a"=>"w"],["a"=>"c"])); 输出结果为 ["a"=>["w","c"]];
3.4 注意:不论是 array_merge()还是array_merge_recursive();如果只有一个参数的时候,会重新安排从0开始的数字键名;
3.5 + 号 不论字符串键名还是数字键名,如果键名相同则会是 先出现的覆盖后出现的,则 参数1 覆盖参数2 的值;
3.6 拓展array_combine()函数, array_combine只能两个参数,取参数1的key值,赋值参数2的数据,即: var_dump(array_combine(['a'=>'m','b'=>'n','c'=>'v'],['a'=>'p','b'=>'t','c'=>'r'])); 输出结果为:[["m"]=>"p",["n"]=>"t",["v"]=>"r"] (注意: 如果参数1键名多于参数2 则报错,返回false,如果参数2键名多于参数1,则追加新数组中)
四、判断数据是否为整数(不区分数据类型,可以为二进制、八进制、十进制、十六进制数字)
4.1 可以用 is_int()函数判断,或者自己写一个函数来判断
if(!is_numeric($number)||!strpos($number,'.')){
echo '不是整数';
}else{
echo '是整数';
}
strpos() 函数 参数2在参数1中出现的位置, 从0开始,如果不存在参数2中,则返回false;
4.2 常用的数据类型区分函数:
isset()://变量是否已经声明
empty()://变量是否为空
defined()://常量是否已经定义 define()
array_key_exists(mixed key, array search)://检查给定的键名或索引是否存在于数组中
is_numeric ( mixed var )://检测变量是 否为数字或数字字符串
is_bool():// 检测变量是否是布尔型
is_float():// 检测变量是否是浮点型 和is_double,is_real()都一样的用法
is_int(): // 检测变量是否是整数is_integer() 一样的 用法
is_string():// 检测变量是否是字符串
is_object():// 检测变量是否是一个对象
is_array():// 检测变量是否是数组
is_null():// 检测变量是否为 NULL 值是否是NULL大小写敏感
is_numeric():// 检测变量是否为数字或数字字符
六、PHP处理上传文件信息数组中的文件类型$_FILES[‘type’]由客户端浏览器提供,有可能是黑客伪造的信息,请写一个函数来确保用户上传的图像文件类型真实可靠
6.1 如果有GD库扩展的话,可以通过getimagesize()函数来判断上传的文件类型,$arr = getimagesize($_FILES['file']); $arr的第二个键值 为获取到的文件类型,$arr[2] 的值 1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byteorder),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 =JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM;