php基础语法

  1. 定界符<?php?>

    PHP里面,把PHP代码包含在定界符里面,

    当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php?>,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。

    定界符的作用:告诉PHP引擎定界符里面的是PHP代码。凡是在一对开始和结束定界符之外的内容会被PHP解析器忽略。大多数情况下PHP都是嵌入在HTML文档中的。

    例如:

    效果:不会被PHP引擎解析,直接原样输入

  2. PHP代码的位置

可以在一个html文档里面的任意位置嵌入PHP代码,只需要写上定界符,开启PHP模式即可。

如下:我们在一个php文档中的html代码中任意位置嵌入PHP代码

  1.  效果:

    这里有一个很重要的细节,客户端无法观察到具体的PHP代码,因为PHP引擎已经将PHP代码转换为了html,所以客户端看到的只是简单的html代码。

    1.您无法在浏览器中通过查看源文档的方式来查看 PHP 的源代码 -

    只能看到 PHP 文件的输出,即纯粹的 HTML。这是因为在结果返回浏览器之前,

    脚本就已经在服务器执行了。

    如下:

3.PHP定界符风格

在PHP中一共有4种风格,分别是标准类型,短标记,ASP式标记和Script式标记

①标准类型:<?php和?>

这是官方推荐的风格,如果没有特殊要求,就使用这个风格

短标记:<??>

偶尔会被禁止,因为可能和其他文件产生冲突

如果要打开,需要在php.ini里面的short_open_tag里面打开注释

③ASP式标记:<%%>

这是为了迎合ASP或者ASP.Net的开发人员的编程习惯,如果要使用,也需要在php.ini中打开注释

如下:

④Script式标记:<script  language="php"></script>

这种风格默认可用,但是不常用

总结:虽然介绍了这么多,但是没什么事儿的话就用标准

4.PHP里面的注释

PHP里面支持3种风格的注释,CC++UNIX shell

shell风格是以一个#

C++风格:是以//来进行注释

C风格:是以/**/来进行注释

指令分隔符

C Perl 一样,PHP 需要在每个语句后用分号结束指令。一段 PHP 代码中的结束标记隐含表示了一个分号;在一个 PHP 代码段中的最后一行可以不用分号结束。如果后面还有新行,则代码段的结束标记包含了行结束。

<?php
     echo  "This is a test" ;
?>

<?php  echo  "This is a test"  ?>

<?php  echo  'We omitted the last closing tag' ; 

Note:

文件末尾的 PHP 代码段结束标记可以不要,有些情况下当使用 include或者require时省略掉会更好些,这样不期望的空白符就不会出现在文件末尾,之后仍然可以输出响应标头。在使用输出缓冲时也很便利,就不会看到由包含文件生成的不期望的空白符。

  1. 变量

①声明变量

我们的PHP解释性语言,由于是弱类型语言,所以变量的类型不用提前定死,和Javascript是一样的,你赋予什么值,它就是什么类型

PHP里面,声明一个变量,使用$符号来声明一个变量,如下:

如果是全局变量,则在多个PHP代码段都可以使用

如下:

这里介绍3个函数

unset():将一个变量置空

isset():检测一个变量是否被设置

empty():检测一个变量是否为空

isset()empty()的区别:

isset():如果设置了,返回true,否则返回false

empty():如果是空,则为true,否则的话为false

什么时候被当作empty

若变量存在且其值为""0"0"NULLFALSEarray()var $var、 以及没有任何属性的对象,则返回 TURE

②变量的命名

规则如下:

1. $开头

2. 后面由数字,字母,下划线组成,但是不能以数字开头

3. 不能是关键字

4. 驼峰命名法,望文知意(软性要求)

PHP里面由于支持utf8编码格式,所以变量名都可以用中文,但是,禁止使用!!!!

变量名区分大小写,但是在PHP里面函数名,用户定义的类和内置的关键字等是不区分大小写。

Note: $this是一个特殊的变量,它不能被赋值。

③ 可变变量

所谓可变变量,就是变量名的值可以动态的设置为另一个的变量的变量值

将一个变量的值作为变量名,并赋新值

④ 引用赋值

所谓引用赋值,就是将一个变量的地址赋值给另外一个变量,但是和C语言不同的是,当我们输出被引用赋值的变量的时候,不会打印出里面存储的地址,而会输出通过地址找到的变量值。

C语言中会输出&$i;

PHP里面变量类型介绍

PHP里面支持8种原始数据类型(4种标准类型,2种复合类型,2种特殊类型

首先介绍一个函数:

var_dump():作用就是查看某一个变量是什么数据类型

效果:打印输出各个变量的值和数据类型,如果是字符串或数组还会分别计算size值和length值,

(1)Boolean类型

和其他语言一样,就两个值,一个是TRUE,一个是FALSE

除了FALSE以外,以下变量值也会被当成FALSE

布尔值FALSE本身

整型值0

浮点型0.0 以及空字符串””以及字符串”0”

- 不包含任何元素的数组

- 不包含任何成员变量的对象

特殊类型NULL

(2) int 整型

JavaScript里面一样,可以使用十进制,八进制,十六进制,甚至还支持二进制

无论是几进制,最终输出都以十进制输出

PHP里面,不支持无符号整数,支持有符号整数

我们可以通过is_int()函数来检测一个变量是否为整型,返回值为true或者false,如下:

效果:因为是一个整型变量,所以输出了”这是一个整数”

还有一个知识点,就是关于整型数据类型的取值范围

一般来讲,整型数据类型的取值范围为-231~231-12147483647

当一个变量的值超出int的取值范围的话,自动被转为float类型

(3) 浮点型

PHP里面浮点数有两种表示方式方法,

第一种就是普通小数表示方式,

还有一种就是科学计数法

PHP里面浮点数精确到14位,这个精度的计算是从最左边开始,第一个0的数就是精度的开始,精度开始后的第15位数按照四舍五入的原则向前进1

浮点数只是一个数的近似表示,并不能存储准确的值

例如:由于浮点数不能精确存储,所以会出现类似于以下的情况

(不要向下面的例子一样命名变量!!!)

和整型一样,也存在is_float()函数来判断一个变量是否是一个浮点数。

(4) 字符串

C语言没有String类型,声明字符串需要声明一个字符串数组

字符串的表示方法:三种‘’、“”、<<<自定义变量  内容  自定义变量;

字符串就是任意长度的字符序列。在PHP里面字符串可以用单引号或者双引号来分隔。在PHP中,单引号和双引号的字符串是有区别的:

如下:单引号里面的变量不会被解析,但是双引号里面的变量会被解析。

如果只是一个普通的字符串,那么建议使用单引号,因为这样的效率比双引号更高。如下:

如果是放在双引号里面需要解析的变量,我们一般会加上一对{}来突显出这是一个变量

双引号里面支持多种字符转义

例如:当我们想要使用普通的双引号的时候,用一个进行转义即可

转义字符代码

转义字符的含义

双引号

单引号

\

反斜杠

换行符

回车符

制表符

$

美元符号

接下来就是单引号支持的转义字符,大多数都是不支持的,但是也不是说完全不支持,只支持两个:单引号和反斜杠

和前面同样,有一个is_string()函数可以判断一个变量是否为字符串,如果是返回TRUE,否则返回FALSE

定义字符串还有一种方法,通过定界符语法<<<标识符

语法:  变量名 = <<<标识符

字符串内容

标识符;

如下:

这种方法一般用于大量的字符串的时候

(5) 数组

数组就是拿来存储多个数据的,在PHP里面,数组可以放入任意类型数据,

通过var_dump(),我们同样可以查看数组的类型,如下:

(6) 对象

后面学习面向对象知识的时候会具体介绍

->表示指向

(7) 资源类型

资源类型其实是保存了外部资源的一个引用。

(8)Null类型

该类型只有一个值,表示一个变量没有值

3种方法让一个变量成为null

  1. 直接给变量赋值为null
  2. Unset()函数销毁一个变量
  3. 声明一个变量,但是不赋值

(9) 伪类型

Mixednumbercallback

3个不是PHP里面的标准数据类型,这3个代表的意思依次如下:

Mixed:代表一个参数可以接受多种不同类型

Number:说明一个参数可以是int也可以是float

Callback:说明参数可以是一个用户自定义的函数

  1. 数据类型之间的相互转换

①  自动类型转换

自动转换通常在不同的数据类型之间进行混合运算的时候,会先将其转换为同一类型,然后进行运算。

自动类型转换:转换为布尔型,转换为整形,转换为浮点型,转换为字符串型

转换为布尔型:

除了FALSE以外,以下变量值也会被当成FALSE

布尔值FALSE本身

整型值0

浮点型0.0 以及空字符串””以及字符串”0”

- 不包含任何元素的数组

- 不包含任何成员变量的对象

特殊类型NULL

转换为整型:

布尔型转整型:TRUE转换为1FALSE转换为0

浮点型转换为整型:向下取整(直接舍去小数部分)

字符串型转整型:取决于开始的部分,如果字符串以合法的数值开头,则使用该数值,否则转换为0

转换为字符串型:

布尔型转字符串型:布尔值TRUE会转换为”1”FALSE会转换为””

整型或者浮点型转换为字符串型:就是将数字的字面值转换为string类型

例如:

3  “3”

3.14 “3.14”

②  强制类型转换

就和以前在C语言里面是一样,将要转换的数据类型写在一个小括号里面

如下:

这里顺便介绍两个函数

Strval():获取变量的字符串值,stravlstring  value 的简写)

settype():作用就是设置变量的数据类型

接收两个参数  settype(变量,“数据类型”);

类型转换的一些细节:(总结)

  1. 整数转为浮点型的时候,由于浮点型的精度要比整型大,所以转换后的精度不变
  2. 浮点型转换为整型的时候,小数部分自动舍去
  3. 如果一个浮点数转换为整型,取值范围超过了整型,那么结果将会是不确定的。
  4. 字符串转换为数字的时候,取字符串开始部分的数值,开始部分的数值也包括科学计数法。如果没有数值就为0
  5. Null转换为字符串的话,将会转换为空字符串””

7.常量

常量一般就是一些固定的值,

例如数学里面的PI3.1415926… 对于这种固定的值,我们就可以将其定义为常量

常量的作用域是全局的,可以在脚本的任何位置访问和使用

①  常量的定义

PHP里面,通过define()函数来定义一个常量

语法:

Define(“常量名”,常量值,[true/false]);

如下:

如果第3个参数设置为true,则代表不区分大小写

默认是FALSE

②使用const关键字赋值  

语法 const  PI=3.14; echo PI;//3.14

关于常量一些其他知识总结:

  1. 常量前面没有$符号
  2. 常量可define()函数来定义,还能通过赋值语句 const关键字进行赋值
  3. 常量可以不用理会变量的作用域,可以在脚本的任意位置访问到
  4. 常量值得类型只能是标准数据类型booleanintfloatstring

8.系统中预定义的常量

PHP里面提供了一套系统定义好了的常量

如下表:

常量名

常量值

说明

PHP_OS

一般值为unix或者winnt

执行php解析的操作系统的名称

PHP_VERSION

5.4.16

当前PHP服务器的版本

TRUE

代表布尔值真

FALSE

代表布尔值假

NULL

代表空值

M_PI

3.1415926535898

圆周率

E_ERROR

1

错误,导致PHP脚本运行终止

E_WARNING

2

警告

E_PARSE

4

解析错误

E_NOTICE

8

提示,非关键错误,例如申明了一个变量但是没有赋值

如下:

9.PHP中的魔术常量

所谓魔术常量,就是指常量的值不是固定的,会根据不同的环境而发生改变

魔术常量名以两个下划线开始,两个下划线结束

常量名

常量值

__FILE__

当前文件名

__LINE__

当前行数

__FUNCTION__

当前函数

__CLASS__

当前类名

__METHOD__

当前对象方法

效果:

10.PHP里面的运算符

①  算数运算符

加法,减法,乘法,除法,求模,算数符号,算数断言

注意一下除法,例如5 / 2将会得到2.5

算数断言:就是在操作数的前面加一个+

一元运算符的自增和自减

++  --

分为两种:a++++a

PHP里面的自增有独特的地方,在PHP里面,不仅可以对数字进行自增,还可以对字符串进行自增(注意只有递增,没有递减)

如果是字母,可以像算数运算一样往前进位

自动递增

得到结果

“a”

“b”

“z”

“aa”

“spaz”

“spba”

“a9”

“b0”

②  字符串运算符

只有一个知识点,就是字符串的拼接,在PHP里面,通过一个”.”来进行字符串的拼接

字符串类型非常霸道,和任何标量数据相连接的话,合并成新的字符串类型

③  赋值运算符

基本操作符就是一个 =

除此之外,还有其他的一套:

符号

+=

-=

/=

*=

%=

^=

&=

|=

.=

④  比较运算符

相等,全等,不等,不全等,大于,小于,大于等于,小于等于

⑤ 逻辑运算符

逻辑运算符有4个:逻辑与,逻辑或,逻辑非,逻辑异或

逻辑异或:^

作用:两个变量不相同返回真,相同返回假

php里面,&&,||可以使用and和or来表示,但是实际开发中一般还是符号用得多一些

逻辑运算符同样存在短路现象

判断正确就不会进行下一个条件判断

对于&&,如果第一个操作数为FALSE,那么不会去计算第二个操作数的结果,直接返回FALSE

对于||,如果第一个操作数是true,那么不会去计算第二个操作数,直接返回true。

⑥  位运算符(用得不多)

位运算符主要作用于二进制的操作数上面,所以当使用位运算符的时候,所有操作数首先需要转换为二进制数

按位非,左移,右移,按位与,按位异或,按位或

按位非:~  取反

$A    ~   $A

0        1

1        0

按位与:& 两者都为1的时候为1,否则为0

$A          $B            $A & $B

0            0               0

         0            1               0

         1            0               0

         1            1               1

按位或:|  只要有一位为1,则为1,否则为0

$A           $B            $A | $B

0             0               0

         1             0               1

         0             1               1

         1             1               1

按位异或:^ 二者不同为1,相同为0

$A            $B           $A ^ $B

         1             0               1

         0             1               1

         1             1               0

         0             0               0

练习:

$a & $b

$a   0000  1100

$b   0000  0011

     0000  0000 = 0

$a ^ $b

$a   0000  1100

$b   0000  0011

     0000 1111 = 15

$a | $b

$a   0000  1100

$b   0000  0011

     0000   1111 = 15

$a << $b

$a   0000  1100   

     0110  0000  = 96

这个位运算有什么作用:在进行固定的运算的时候,效率相当之高,左移一位就相当于是乘以2,右移一位相当于除以2

⑦  其他运算符

  1. 错误屏蔽运算符:@

有些时候当我们书写php代码的时候,可能会出现一些警告,这个错误屏蔽运算符@就是用来屏蔽这些警告

  1. 三元运算符

又被称作三目运算符   ?:

例如  A?B:C

A>b?max(a):min(b);

  1. Instanceof:测试一个对象是否是一个类的实例化
  2. 对象成员访问符:->

⑧  运算符的优先级

PHP运算符的优先级具体如下表:

 

除了上面的优先级以外,我们可以通过一对小括号来改变优先级

11.表达式

所谓表达式,就是任何一个可以得到值的式子,就可以被称之为表达式。

原文地址:https://www.cnblogs.com/chenduzizhong/p/7355201.html