一、PHP标记符
PHP标记符能让Web服务器识别PHP代码的开始和结束,而标记之外的任何文本都会被认为是普通的HTML,有4种风格:
1、标准风格
<?php
//PHP代码
?>
但是对于只包含PHP代码的文件,结束符“?>”是多余的,如果加上它,phpStorm里面会给个警告:Closing tag ‘?>’ is redundant for files containing only PHP code.而且,如果使用F7单步调试,调试到结束符“?>”这一行后,也会给出警告:
Warning: main(): Property access is not allowed yet in D:\projects\source\PHP\test1\test_info.php on line 10
Warning: main(): Couldn’t fetch mysqli in D:\projects\source\PHP\test1\test_info.php on line 10
但是使用F9后断点处直接运行,就不会有上面的警告。
我是PHP技术小白,实在是不理解为什么会这样,哪位大神知道的话,欢迎留言指导。
2、脚本风格
<script language="php">
//PHP代码
</script>
它符合XML的规范,在XHTML或XML中推荐使用这种标记风格。
3、短风格
<?
//PHP代码
?>
要想使用它,必须修改配置文件php.ini,short_open_tag = On,但不推荐使用
4、ASP风格
<%
//PHP代码
%>
要想使用它,必须修改配置文件php.ini,asp_tags = On,但不推荐使用
另外,美元符号 是 变 量 的 标 识 符 , 所 有 变 量 都 是 以 是变量的标识符,所有变量都是以 是变量的标识符,所有变量都是以符开头的,无论是声明变量还是调用变量,$符都是必须的。
二、PHP注释
1、多行注释
/**/多行注释不允许嵌套,里面可以包含PHP结束符“?>”
2、单行注释
单行注释有两种风格,一般为//,还有一种为shell风格的#。单行注释里不能出现“?>”的标志,解释器会认为是PHP脚本结束。
三、数据类型
1、整型
整型数据类型只能包含整数,可以用八进制、十进制、十六进制来表示。如果用八进制,数字前加0,如果在八进制中出现了非法数字(8和9),则后面的数字会被忽略掉。如果用十六进制,数字前加0x,如果在十六进制中出现非法字符,则会报错。
如果数值超出了int表示的最大范围,则会发生整数溢出,被当做float型处理。
2、布尔型
不是只有false值才为假的,在一些特殊情况下boolean值也被认为是false,这些特殊情况为:0、0.0、“0”、空字符串、没有赋值的数组等。
3、浮点型
浮点型可以表示小数,在PHP 4.0之前,只有double类型的。
4、字符串
定义字符串有3种方式,单引号(’’)、双引号("")、界定符(<<<)。注意,双引号中包含的变量会自动被替换成实际数值,而在单引号中包含的变量则按普通字符串输出。对转义符的使用,使用单引号时,只要对单引号转义就行了,但使用双引号时,还要注意“’”、“$”等字符的转义,但不需要转义单引号。
界定符是从PHP4.0开始支持的,用于定义格式化的大文本(格式化是指文本中的格式将被保留,所以文本中不需要使用转义字符),在使用时,后面接一个标识符,然后是字符串,最后以同样的标识符结束字符串。其格式如下:
$string = <<< str
要输出的字符串
str
其中str为用户自定义的标识符。例子如下:
<?php
$string="学习PHP";
echo <<<str
这和双引号没什么区别,\$string被输出出来<p>
\$string的内容是:$string
str;
?>
界定符的结束符必须单独另起一行,并且前后都不允许有空格或其他字符,否则运行程序时会报错:
Parse error: syntax error, unexpected end of file
在界定符开始标识和结束标识之间不允许添加注释,否则注释会被输出出来。
5、null类型
null(空)实际上表示一个变量没有被赋值,null和NULL效果是一样的。被赋空值的情况有3种:
1)没有赋予任何值;2)被赋予null值;3)被unset()函数处理过的变量(unset()用来销毁指定的变量,被unset()处理过的变量,后面就不可以再使用了)。
变量是否为空值,可以使用is_null()函数测试。
6、类型转换
和C的类型转换一样,只需在变量前加上用括号括起来的类型名称即可,允许转换的类型有:
(boolean)、(string)、(integer)、(float)、(array)、(object)
类型转换还可以通过settype()函数来完成,将指定的变量转换成指定的数据类型。string类型转为array或object都会报错。
三、常量
使用define()函数定义常量,其格式如下:
define(name:string,mixed value,[case_insensitive:bool = false]);
name:常量名;value:常量值;case_insensitive:大小写是否敏感,设置为true为不敏感,默认是敏感的。
获取常量值有两种方法:
1)使用常量名直接获取;
2)使用constant()函数,这和使用常量名输出的效果是一样的,但函数可以动态输出不同的常量,其语法格式为:
mixed constant(string const_name);
参数const_name为要获取常量的名称,也可为存储常量名的变量。成功返回常量的值,失败提示常量没有定义的错误信息。
要判断一个常量是否已经定义,可以使用defined()函数,其语法格式为:
bool defined(string constant_name);
参数constant_name为要获取常量的名称,成功返回true,失败返回false。
四、变量
1、定义变量
在PHP4.0之后,使用变量之前不需要声明变量,只需要为变量赋值即可。其命名规则如下:
1)变量区分大小写(函数名不区分大小写);
2)变量名必须是以美元符号($)开始;
3)开头可以以下划线、英文字母开始,不能以数字开头;
4)可以包含一些扩展字符(如重音拉丁字母),但不能包含非法扩展字符(如汉字字符和汉字字母);
5)同一个作用域内,声明的变量不能重名。
在定义变量时,不需要指定变量的类型,PHP自动根据对变量的赋值决定其类型。如果在定义变量时没有指定变量的初始值,那么在使用变量时,PHP会根据变量在语句中所处的位置确定其类型,并采用该类型的默认值。字符串的初始值为空值;整型的初始值为0;布尔型的初始值为false。从PHP4.0开始,PHP可以引用赋值。
2、变量的作用域
3、可变变量
可变变量的名称并不是预先定义好的,而是动态地设置和使用,可变变量一般是指使用一个变量的值作为另一个变量的名称,所以可变变量又称为变量的变量。可变变量通过在一个变量名称前使用两个“$”符号实现。
4、预定义变量
详情见PHP预定义变量
五、运算符
1、字符串运算符
英文的句号“.”将两个字符串连接起来,形成一个字符串。
2、其他运算符
算术运算符、赋值运算符、递增递减运算符、位运算符、逻辑运算符、比较运算符、条件运算符和其他语言的没什么大的区别。下表按照优先级从高到低列出了运算符,同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
对具有相同优先级的运算符,左结合方向意味着将从左向右求值,右结合方向则反之。对于无结合方向具有相同优先级的运算符,该运算符有可能无法与其自身结合。