PHP基础

1. PHP引用变量

  • 什么是php引用变量,在PHP当中,用什么符号定义引用变量?
    答:引用变量:在PHP中引用意味着用不同的名字访问同一个变量内容。
    定义方式:使用&符号

  • 延伸 php 引用原理

// COW Copy On Write  (写时复制)
//有一定经验的程序员应该都知道Copy On Write(写时复制)使用了“[引用计数](https://baike.baidu.com/item/%E5%BC%95%E7%94%A8%E8%AE%A1%E6%95%B0)”(reference counting),会有一个变量用于保存引用的数量。当第一个类构造时,string的[构造函数](https://baike.baidu.com/item/%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0)会根据传入的参数从堆上分配内存,当有其它类需要这块内存时,这个计数为自动累加,当有类析构时,这个计数会减一,直到最后一个类析构时,此时的引用计数为1或是0,此时,程序才会真正的Free这块从堆上分配的内存。


//memory_get_usage();获取内存使用量
$a=range(0,100);
var_dump(memory_get_usage());//376472  //一个内存空间 refcount=1 is_ref=0

$b=$a;
var_dump(memory_get_usage());//376536  //一个内存空间 refcount=2 is_ref=0

$a=range(0,100);
var_dump(memory_get_usage());//380872 两个内存空间 refcount=1 is_ref=0

$b=&$a;  
var_dump(memory_get_usage());//376752 //一个内存空间 refcount=1 is_ref=1

unset($a);//unset只会取消引用,不会销毁空间
var_dump(memory_get_usage());//376752

unset($b);
var_dump(memory_get_usage());//373552

class 特性

class  Person{
    public $name='张三';
}
$obj1=new Person();
var_dump($obj1);//张三
$obj2=$obj1;
var_dump($obj1);//张三
var_dump($obj2);//张三
$obj2->name='李四';
var_dump($obj1);//李四
var_dump($obj2);//李四
//结论:对象本身就是引用传递

真题


image.png

第一次循环 abc
第二次循环 bbc
第三次循环 bcc

2. 常量及数据类型

PHP中字符串可以使用哪三种方式定义,他们的区别是什么?

  • 三种方式 单引号 双引号 heredoc和newdoc
  • 区别
    1.单引号不能解析变量
    2.单引号不能解析转义字符,只能解析单引号和反斜线本身
    3.变量和变量、变量和字符串、字符串与字符串之间可以用.连接
    4.双引号可以解析变量,变量可以使用特殊字符{}包含
    5.双引号可以解析所有转义字符
    6.也可以使用.连接
    7.单引号效率更高
    8.heredoc类似双引号
    9.newdoc类似单引号
    10.heredoc和newdoc都用来处理大文本

* 延伸

1.数据类型
三大数据类型(标量、复合、特殊)

1.1 浮点类型不能用于比较运算中

1.2 flase的七中情况

   0   0.0   ' '    '0'   false   array()   null
1.3 PHP中超全局数组

  $GLOBALS;
  $_SERVER;
  $_FILES;
  $_GET;
  $_POST;
  $_COOKIE;
  $_ENV;
  $_REQUEST;
  $_SESSION;

重点记忆

$_SERVER['SERVER_ADDR'];//服务器端ip地址
$_SERVER['REMOTE_ADDR'];//客户端ip地址
$_SERVER['SERVER__NAME'];//请求时间
$_SERVER['QUERY_STRING'];//?后面的
$_SERVER['HTTP_REFERER'];//上级请求页面
$_SERVER['HTTP_USER_AGENT'];//头信息中的user-agent信息
$_SERVER['REQUEST_URI'];//全
$_SERVER['PATH_INFO'];//路由

1.4 NULL的三种情况
直接赋值为NULL、未定义的变量、unset销毁的变量
1.5常量
1.5.1 定义方式
const define
1.5.2 区别

    const更快,是语言结构,define是函数
    define不能用于类常量的定义,const可以
    常量一经定义都不能被修改和被删除

1.6 预定义常量
      __FILE__;//文件路径名和文件名称
      __LINE__;//所在行号
      __DIR__;//所在目录
      __FUNCTION__;//所在函数体 函数名称
      __CLASS__;//类名
      __TRAIT__;//trait名称
      __METHOD__;//方法名
      __NAMESPACE__;//命名空间

3.PHP运算符

真题

  • foo()和@foo()之间的区别
    php支持一个错误运算符:@ 当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉
  • 运算符优先级


    运算符优先级
  • ==和===的区别
    ===是全等于 数据类型也需要一致
  • 递增递减运算符


  • 逻辑运算符
    短路作用和优先级不同


    image.png
  • 真题
$bool=false;
echo $bool++;
var_dump($bool++);//false;


$bool=true;
echo $bool++;//1
var_dump($bool++);//true;
image.png

4.流程控制

image.png

image.png

image.png
  • 真题
    PHP中如何优化多个if...eleif 语句?
    将可能性大的放前面
    考虑使用switch..case

7 会话控制

会话控制

为什么要使用会话控制技术

http是无状态的 无法记录用户的状态

会话控制技术 用来跟踪用户的请求
请求一次后,保存状态 下一次再请求时 就有记录了

实现方式

GET值传递

cookie

设置cookie

setcookie(name,value,expire,path,domain,secure)
name 键value 值
expire 过期时间path 路径
domain 域名secure 安全相关

获取cookie
$_COOKIE[key]

删除cookie
setcookie($name,'',time()-1);

cookie优缺点
1.不会占用服务器资源
2.存在客户端不安全
3.用户可以禁用cookie

session优缺点
1.session基于cookie 如果cookie被禁用 可以通过值传递的方式传输
2.存储在服务器

HTTP 状态码

1xx 信息类状态码 表示接收的请求正在处理

2xx 请求处理状态

200     成功
204     不含实体的主体部分
206     部分的内容

3xx 重定向

301     永久重定向
302     临时重定向
303     
304 
307 

4xx 客户端错误

400
401
403
404

5xx 服务端错误

500
503 

OSI 七层模层

第一层     物理层                 建立维护断开物理连接
第二层     数据链路层           建立逻辑连接、进行硬件地址寻址、差错校验等功能
第三层     网络层             进行逻辑地址寻址,实现不同网络之间的路径选择
第四层     传输层             定义传输数据的协议端口号,以及流控和差错校验 TCP、UDP 数据包一旦离开网卡即 进入网络传输层
第五层     会话层             建立管理终止会话
第六层     表示层             数据的表示安全和压缩
第七层     应用层             网络服务与应用服务的一个接口 协议有  HTTP FTP TFTP SMTP SNMP DNS ETELNET HTTPS POP3 DHCP

8.正则表达式

  • 正则表达式的作用

  • 分隔符正斜线(/)、hash符号(#)、取反符号(~)

  • 通用原子

    • \d 匹配数字
    • \D 匹配除了数字
    • \w 数字字母下划线
    • \W 除了数字字母下划线
    • \s 空白符
    • \S 除了空白符
  • 元字符

    • . 除了换行符
      • 前面的内容0个一个或多个
        
    • ? 前面的内容0个或一个
      • 前面的内容0个或一个
        
    • ^ 以^后面的内容开始
    • 以后面的前面的内容结束
    • {n} 匹配前面的内容n个
    • {n,} 匹配前面的内容>=n个
    • {n,m} 匹配前面的内容>=n个<=m个
    • [] 集合 [abc] a或b或c
    • () 后向引用或整体
    • [^] 取反 [^abc] 除了abc
    • | 或者
    • [-] 范围 [0-9] 代表0-9
  • 模式修正符

    • i 不区分大小写
    • m 每一行分开匹配(前提是有换行)
    • e 对匹配到的数据做php语法处理(php7.0已移除)
    • s 修正点.的换行
    • U 取消贪婪模式
    • x 忽略模式中的空白符
    • A 必须以这个模式开头
    • D 修正$对\n的忽略
    • u 中文匹配
  • 后向引用

    eg:

    $str='<b>abc</b>';

    $pattern='/<b>(.*)<\/b>/';

    preg_replace($pattern,'\\1 ',$str);//此处1代表(.*)匹配到的东西
  • 贪婪模式
    eg:
    $str='<b>abc</b><b>abc</b>';

    $pattern='/<b>(.*)<\/b>/';

    preg_replace($pattern,'\\1 ',$str);
.* 匹配会匹配到最后一个 //<b>abc</b><b>abc</b>

.*?取消贪婪模式匹配到一个  就不往下匹配了  //<b>abc</b>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356