PHP 初学笔记01

易小灯塔
2017-06-10 / 0 评论 / 691 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年06月22日,已超过888天没有更新,若内容或图片失效,请留言反馈。

输出打印语句**

  • echo
  • var_dump
  • print_r


书写规范

  • 每行语句后面以;号结束
  • 字符型的值用"" ''单引号或双引号来包含
  • 双引号里的变量会被解析,而单引号里边的变量不被解析
  • 在双引号字符串里使用[]包含数组或方法函数对象也可以被解析
  • 在双引号字符串里可以使用{}包括表达式,里面的表达式要紧贴挂号,不能有空格。
  • 需要转义\时用双引号
  • 布尔类型的和数字整数浮点数不用加引号
  • $值名称不能以数字开头,名称不能有空格,区分大小写,函数方法名、类名也是一样
  • 注释不可嵌套
  • 初始化变量是个好习惯
  • require 一个文件出现错误的话,那么程序就会中断执行了,并会显示致命错误。有返回值
  • include 一个文件存在错误的话,那么程序不会中断,而是继续执行,并显示一个警告错误。没有返回值
  • 最大整数-2147483648~2147483684

其他概念

  • 表达式的值即为他们的返回值
  • 赋值的操作是顺序是从右到左的
  • 三元运算符要避免堆砌使用,避免读代码时的困难程度


##数据类型 标量类型

  • boolean 布尔型:ture或false 不区分大小写
  • integer 整型 -xxx round()对 浮点数进行四舍五入的函数
  • float 浮点型
  • string 字符串
  • heredoc结构 相当于可多行书写的""双引号结构 变量会解析
  • nowdoc结构 相当于可多行书写的''单引号结构 不进行解析操作
  • 字符串可以通过下标取[]{}取字符
  • 直接把 arrayobjectresource 转换成 string 不会得到除了其类型之外的任何有用信息
  • 字符串转为数值:该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成。


复合类型

  • array数组
  • array( key => value)创建一个数组。数组由键和值组成
  • (key)可是是一个整数 integer 或字符串 string
  • (value)可以是任意类型的值
  • 每一组数组单元用,隔开,最后一个数组的,可以省略
  • 在5.4起可以用[]替代array()
  • 使用相同的键名会被覆盖,只剩下最后一个
  • 如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。
  • key 为可选项。如果未指定,PHP 将自动使用之前用过的最大 integer 键名加上1作为新的键名,还可以只对某些单元指定键名而对其它的空置,其他键名自动会填充一个整数索引
  • 数组单元可以通过array[key]访问
  • 数组可以嵌套,数组的值可以是一个数组,这样数组叫做多维数组。
  • 要修改某个值,通过其键名给该单元赋一个新值,要删除某键值对,对其调用unset()函数,删除时不会重建索引。
  • 不写键值会默认填充一个整数索引。取值为当前最大整数索引加上1。如果没有整数索引,则键名为0
  • array_values 重建索引
  • foreach($a as $b) 遍历数组$a中的数组单元赋值给$b
  • $foo['bar'] 方括号[]之间要加引号''避免出错
  • 可以用array_diff()或数组运算符来比较数组
  • 数组(Array)的赋值总是会涉及到值的拷贝。使用引用运算符&通过引用来拷贝数组
  • 可以用count()来表示数组里元素的个数
  • object 对象
  • 要创建一个新的对象object,使用new实例化一个类
  • new给对象开辟一个新内存空间,用了储存对象


两种特殊类型

  • resource 资源
  • 资源resource是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
  • null 空;无类型
  • 使用(unset)$var将一个变量转换为null将不会删除该变量或unset的值。仅仅是 返回null值而已。


伪类型

  • mixed 混合类型
  • number 数字类型
  • callback 回调类型

类型的强制转换 允许的强制转换有:

  1. (int), (integer) - 转换为整形 integer
  2. (bool), (boolean) - 转换为布尔类型 boolean
  3. (float), (double), (real) - 转换为浮点型 float
  4. (string) - 转换为字符串 string
  5. (array) - 转换为数组 array
  6. (object) - 转换为对象 object
  7. (unset) - 转换为 NULL (PHP 5)

gettype() 查看表达式数据的类型 可以强制转换数据的类型


变量

  • $this是一个特殊的变量,他不能被赋值.
  • 变量默认总是传值赋值。当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。
  • 引用赋值&,当一个变量的值赋予另外一个变量时,改变其中的一个变量的值,会影响到另外一个变量的值。**只有有名字的变量才可以引用赋值&
  • global全局变量
  • function里不能直接调用局部变量,要把变量变为全局变量才可以调用
  • $GLOVALS声明引用全局作用域中的全部变量,一个保护了全部变量的全局组合数组。变量的名字就数组的键。
  • 超全局变量>全局变量>局部变量
  • 注意局部,域的概念
  • static静态变量
  • 一般函数内变量在函数结束后被释放,比如局部变量。使用静态函数可以在下次再调用这个函数的时候,该变量值会保存下来
  • 静态变量如果在声明中对表达式赋值会导致解析错误
  • 引用赋值和静态变量有可能会有冲突
  • 可变变量
  • $$a变量名可以是变量,叫做可变变量
  • 如果出现运算顺序模棱两可的情况下时,可以使用大括号{}调整顺序,清晰定界
  • 类的属性也可以用变量名来访问
  • 在PHP的函数和类的方法中,超全局变量不能用作可变变量。$this变量也是一个特殊的变量,不能被动态引用。


常量

  • 使用define()来定义常量
  • 一个常量一旦被定义,就不能再改吧或者取消定义
  • 常量前面没有$符号
  • 常量的值只能是标量
  • 常量要大写
  • php5.3之后可以用 const定义一个常量,要写在页头
  • 魔术常量
  • __LINE__ 文件中的当前行号
  • __FILE__ 文件完整的路径和文件名
  • __DIR__ 文件所在的目录。如果用在被包括的文件中,则返回被包括的文件所在的目录。除非是根目录,否则目录中名不包括末尾的斜杠\
  • __FUNCTION__ 函数名称。php5起常量返回该函数被定义的名字(区分大小写)
  • __CLASS__ 类的名称。
  • __TRAIT__triat的名字。
  • __METHOD__ 类的方法名。返回改方法被定义时的名字
  • __NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的。


表达式

  • $a+=3意思是取变量$的值,加上,得到的结果再次分配给a的值,加上3,得到的结果再次分配给$a。
  • $a?$b:$c 如果第一个表达式的值是true(非零),那么计算第二个子表达式的值,其值为证表达式的值。否则,将是第3个子表达式的值


运算符

  • 左结合:从左往右。右结合:从右向左
  • 使用括号可以增加代码的可读性
  • %取模运算结果会强制转化为整数
  • 赋值运算符=,数组array赋值运算符=>,传递赋值运算符&
  • 注意赋值运算将原变量的值拷贝到新变量中(传值赋值),所以改变其中的一个并不影响另一个。这也适合于在密集循环中拷贝一下值例如大数组。
  • 在php中普通的传值行为有个例外就是碰到对象object时,在php5中式以引用赋值的,除非明确使用了clone关键字来拷贝
  • php5起,new运算符自动返回一个引用,因此再对new的结果进行引用赋值在php5.3以后版本中会出现错误
  • @错误控制符。当将其放置在一个php表达式之前,该表达式可能产生的任何错误信息都被忽略掉。此运算符只对表达式有效。
  • ++$a等于计算$a+1并把值再赋予$a,已经得到运算值
  • $a++等于$a的值等于$a+1,还未得到运算值
  • .=字符串连接赋值运算符,它将把右边的参数附加到左边的参数之后。
  • 数组运算$a+$b把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只使用左边数组中的,右边的被忽略
  • 类型运算符instanceof用于确定一个php变量是否属于某一类class的实例


流程控制

  • 替代语法:PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。不支持在同一个控制块内混合使用两种语法。
  • while(){}循环:表达式的值每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。有时候如果while表达式一开始就是false,则循环语句一次都不会执行。
  • do-while


其他 包含文件的语句 - 返回语句

  • return

各种循环语句

  • for(){}
  • wile(){}
  • swite(){}
  • 数组的概念
  • 创建和读取数组
  • array

数据库

  • 连接,增删改查操作
  • contont

函数方法

  • function()
  • 自带函数
  • 魔术方法 类的概念
  • class()
  • 对象实例化 new
  • 对象调用$this->

正则表达式

mvc框架的概念 控制器概念 面向对象编程的概念 框架

image-20201107150331246

0

评论 (0)

取消