PHP基础知识点总结(一)

参考文章 地址 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;

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值