php学习笔记
1
PHP文件末尾结束标记可以不要,在有些情况下当使用include和require的时候省略掉会更好些,这样不期望的空白符就不会出现在文件末尾,之后仍然可以输出响应标头。在使用输出缓冲的时候也会很方便
2 类型
1)简介
四种标量类型
boolean
integer
float
string
三种复合类型
array
object
callable
两种特殊类型
resource
null
当需要判断数据类型的时候用gettype函数,要检验某个类型的时候用is_type函数(is_int())。
当需要将一个变量转换成某个类型的时候,可以对其使用强制转换或者settype()函数。
- (int) 强制转换成整形
- (bool)
- (float),(double),(real)
- (string)
- (object)
- (unset) 转换成Null
2)boolean
当转换成boolean时,以下的值被认为是false
- 布尔值false本身
- 整型值0
- 浮点型值 0.0
- 空字符串,以及字符串 "0"
- 不包括任何元素的数组
- 特殊类型null(包括尚未赋值的变量)
- 从空标记生成的simplexml变量
其他的所有的值都是被认为是true(包括任何资源和nan)
3)整型
整型值可以使用十进制,十六进制,八进制或者二进制表示,在前面加上可选的符号(+ 或者 -)
二进制表达的Integer从php5.4.0开始使用
要使用八进制表达,数字前面必须加上0,使用十六进制必须加上0x,要使用二进制就必须加上0b
<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>
PHP 7.0.0 起,NaN 和 Infinity 在转换成整型时,不再是 undefined 或者依赖于平台,而是都会变成零。
4)浮点型
不要比较链各个浮点型数值的大小
对于其他类型的值,要先转换成整型。再转换成浮点型
5)字符串
- 单引号
- 双引号
- heredoc语法结构
- nowdoc语法结构
单引号:要表达一个单引号本身的时候需要一个反斜杠\来转义。要表达一个反斜线本身的时候,则需要两个反斜线\。其他任何方式的反斜线都会被当成反斜线本身,也就是说如果想使用其他转义序列例如\r或者\n,并不代表任何特殊含义,就单纯是这两个字符本身
Note:不像双引号或者heredoc语法结构,在单引号字符串中的变量和特殊字符的转义序列将不会被替代
双引号:和单引号字符一样,转义任何其他字符都会导致反斜线被显示出来
用双引号定义的字符串最重要的特征是变量会被解析
heredoc:<<<。在这个运算符后面提供一个标识符,然后换行,接下来是字符串string本身,最后要用前面定义的标识符作为结束标识。
要注意的是:结束标识符这行除了可能有一个分号(;),绝对不能包含其他字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。
更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,比如在unix和max os系统上是\n,而结束定界符之后也必须紧跟一个换行。
static $bar = <<<LABEL
Nothing in here...
LABEL;
------------------------------------------
<?php
echo <<<"FOOBAR"
Hello World!
FOOBAR;
?>
Nowdoc:这种结构类似于单引号字符串,不进行解析操作。这个种结构很适合用于嵌入PHP代码或者其他大段文本而无需对其中的特殊字符进行转义。
<?php
$str = <<<'EOD'
Example of string
spanning multiple line
using nowdoc syntax.
EOD;
6)Array数组
PHP中的数组是一个有序映射。映射是一种把values关联到Keys的类型。此类型在很多方面做了优化。因此可以把它当成真正的数组,或列表。散列表,字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一种数组,树形结构和多维数组也是允许的。
key有以下的强制转换
-
包含有合法整型值的字符串会被转换成整型,例如键名"8"会被转换成8,但是键名"08"就不会被转换,因为这不是一个合法的十进制数值
-
浮点数也会被转换成整型,意味着其小数部分会被舍去。例如键名8.7实际上会被储存成8。
-
布尔值也会被转换成整型。其中true转换成1,false转换成0、
-
null值会被转成空字符串
-
数组和对象不能作为键名。
<?php // 创建一个简单的数组 $array = array(1, 2, 3, 4, 5); print_r($array); // 现在删除其中的所有元素,但保持数组本身不变: foreach ($array as $i => $value) { unset($array[$i]); } print_r($array); // 添加一个单元(注意新的键名是 5,而不是你可能以为的 0) $array[] = 6; print_r($array); // 重新索引: $array = array_values($array); $array[] = 7; print_r($array); ?> unset: 函数允许删除数组中的某个键。但要注意数组将*不会*重建索引。如果需要删除后重建索引,可以用array_values函数。
7)对象
对象初始化
要创建一个新的对象object,使用new语句实例化一个类:
<?php
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
8)资源
由于资源类型变量保存有为打开文件,数据库连接,图形画布区域等的特殊句柄,因此将其他类型的值转换成资源没有意义
9)Null
在下列情况下一个变量被认为是null:
- 被赋值为Null
- 尚未被赋值
- 被unset
使用(unset)$var 将一个变量转换成Null将不会删除该变量或者unset其值,仅是返回Null值而已
3 变量
PHP中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
变量名与PHP中其他的标签遵循相同的规则,一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
$this是一个特殊的变量,他不能够被赋值
PHP还有一种方式给变量赋值,引用赋值。这意味着新的变量简单的引用了原始变量。改动新的变量将会影响到原始变量。
只有有名字的变量才可以引用赋值。
4 常量
常量是一个简单值的标识符,如同其名称所暗示的,在脚本执行期间该值不能改变。常量默认认为大小写敏感。传统上常量标识符总是大写的。
常量名和其他任何PHP标签遵循一样的命名规则。合法的常量名以字母或者下划线开始,后面跟着任何字母,数字或者下划线。
名称 | 说明 |
---|---|
_ _ LINE _ _ | 文件中的当前行号 |
_ _ FILE _ _ | 文件的完成路径和文件名。如果用在被包含文件中,则返回被包含的文件名。总是包含一个绝对路径 |
_ _ DIR _ _ | 文件所在的目录。如果用在被包含的文件中,就会返回被包含的文件所在的目录。他等价于dirname(_ _ FILE _ _)。除非是根目录,否则目录中名不包括末尾的斜杠 |
_ _ FUNCTION _ _ | 函数名称。返回该函数被定义时候的名字。在PHP5之前都是小写的 |
_ _ CLASS _ _ | 类的名称。从PHP5开始本常量返回该类被定义时候的名字。在PHP4的时候总是小写 |
_ _ TRAIT _ _ | trait的名字 |
_ _ METHOD _ _ | 类的方法名 |
_ _ NAMESPACE _ _ | 当前命名空间的名称 |