1.php短标记
PHP 也允许使用短标记 和 ?>,但不鼓励使用。只有通过激活 php.ini 中的 short_open_tag 配置指令或者在编译 PHP 时使用了配置选项 –enable-short-tags 时才能使用短标记。
短标记方式 开始<?
和 结束?>
(不推荐使用) 需要在php.ini文件中开启
SCRIPT风格 开始<script language="php"> 结束 </script>
(不推荐使用) 不需要开启 可直接使用
2.php末尾可以不加结束标记
1 | 如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。 |
??wtf什么玩意
查了一下原因
1 | PHP 解释器碰到 ?> 结束标记时就简单地将其后内容原样输出,直到碰到下一个开始标记。PHP 会在输出时自动删除其结束符 ?> 后的一个换行。该功能主要是针对在一个页面中嵌入多段 PHP 代码或者包含了无实质性输出的 PHP 文件而设计,与此同时也造成了一些疑惑。如果需要在 PHP 结束符 ?> 之后输出换行的话,可以在其后加一个空格,或者在最后的一个 echo/print 语句中加入一个换行。这些影响最多的时候应该是在使用 include 和 require的时候 |
3.指令分隔符是否需要
1 | 同 C 或 Perl 一样,PHP 需要在每个语句后用分号结束指令。一段 PHP 代码中的结束标记隐含表示了一个分号;在一个 PHP 代码段中的最后一行可以不用分号结束。如果后面还有新行,则代码段的结束标记包含了行结束。 |
4.注释
1 |
|
5.类型
PHP 支持 9 种原始数据类型。
四种标量类型:
◦ boolean(布尔型)
◦ integer(整型)
◦ float(浮点型,也称作 double)
◦ string(字符串)
三种复合类型:
◦ array(数组)
◦ object(对象)
◦ callable(可调用)
最后是两种特殊类型:
◦ resource(资源)
◦ NULL(无类型)
还有一些伪类型:
◦ mixed(混合类型)
◦ number(数字类型)
◦ callback(回调类型,又称为 callable)
◦ array|object(数组 | 对象类型)
◦ void (无类型)
6.一大堆布尔值
布尔值
要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。
当转换为 boolean 时,以下值被认为是 FALSE:
◦ 布尔值 FALSE 本身
◦ 整型值 0(零)
◦ 浮点型值 0.0(零)
◦ 空字符串,以及字符串 “0”
◦ 不包括任何元素的数组
◦ 特殊类型 NULL(包括尚未赋值的变量)
◦ 从空标记生成的 SimpleXML 对象
所有其它值都被认为是 TRUE(包括任何资源 和 NAN)。
1 | <?php |
7.数值进制
Warning
PHP 7 以前的版本里,如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。PHP 7 以后,会产生 Parse Error。
8.NaN
某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值(除了 TRUE)进行的松散或严格比较的结果都是 FALSE。
由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 来检查。
9.数组
1 |
|
没有键名的索引数组
1 |
|
10.Object 对象
1 |
|
11.引用赋值
1 |
|
使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)。
只有有名字的变量才可以引用赋值。
12.global 关键字
1 |
|
1 |
|
13.可变变量
有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:
1 |
|
一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中 hello 使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。例如:
1 |
|
这时,两个变量都被定义了:$a 的内容是”hello”并且 $hello 的内容是”world”。因此,以下语句:
1 |
|
与以下语句输出完全相同的结果:
1 |
|
它们都会输出:hello world。
Warning
注意,在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。$this 变量也是一个特殊变量,不能被动态引用。
精彩的代码
1 | $a = "We"; // $a will echo "We" .. and "We" will take $We; |
14.魔术常量
几个 PHP 的”魔术常量”名称 | 说明 |
---|---|
__LINE__ |
文件中的当前行号。 |
__FILE__ |
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。 |
__DIR__ |
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) = |
__FUNCTION__ |
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。 |
__CLASS__ |
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 CLASS 对 trait 也起作用。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。 |
__TRAIT__ |
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。 |
__METHOD__ |
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 |
__NAMESPACE__ |
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。 |
15.错误控制运算符
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
16.执行运算符
PHP 支持一个执行运算符:反引号(``)
。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符”"的效果与函数 shell_exec() 相同。
$output";
?>
`
反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。
17.字符串运算符
有两个字符串(string)运算符。第一个是连接运算符(”.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(”.=”),它将右边参数附加到左边的参数之后。更多信息见赋值运算符。
1 |
|
18.类型运算符
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例:
Example #1 对类使用 instanceof
1 |
|
以上例程会输出:
1 | bool(true) |
instanceof 也可用来确定一个变量是不是继承自某一父类的子类的实例
19.foreach
foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
1 | foreach (array_expression as $value) |
20.可变函数
可变函数
PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
1 |
|
21. 匿名函数
1 |
|