虽然说已经工做,而且也作了两个项目,但总以为本身的基础知识不牢固,因此从头开始学起。学习过程当中的一些代码已上传到 Github 和 码云php
略。。。git
略。。。github
XML 风格windows
<?php echo "这是 XML 风格"; ?>
脚本风格数组
<script language="php"> echo "这是脚本风格"; </script>
简短风格服务器
<? echo "这是简短风格"; ?>
ASP 风格cookie
<% echo "这是 ASP 风格"; %>
若是使用简短风格和 ASP 风格,须要在 php.ini 中进行设置,将 short_open_tag 和 asp_tags 设置为 ON,重启 Apache 服务器session
推荐使用 XML 风格函数
单行注释学习
<?php // 单行注释 ?>
<?php # Shell 风格的单行注释 ?>
多行注释
<?php /* 多行注释 多行注释 多行注释 */ ?>
单行注释中不容许出现 ?> PHP 结束标签
多行注释中不容许出现 */ 多行注释结束标签
PHP 中数据类型能够分为三类:标量类型、复合类型、特殊类型
布尔类型
布尔类型只有两个值:真(true),假(false),一般使用在条件控制或循环控制语句的条件表达式中
PHP 中能够自动转换为假(false)的值:0, 0.0, "0", "", []
字符串类型
字符串就是连续出现的字符序列。PHP 支持四种定义字符串的方式:单引号('),双引号("),heredoc 语法结构,nowdoc 语法结构
<?php echo '字符串'; ?>
<?php echo "字符串"; ?>
若是字符串包含在双引号(")中,能够对变量和一些特殊字符进行解析
# | 含义 |
---|---|
\n | 换行(new line) |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\e | Escape |
\f | 换页 |
\\ | 反斜线 |
\$ | 美圆符号 |
\' | 单引号 |
\" | 双引号 |
... |
\r 和 \n 在 windows 中的对比效果不明显,在 Linux 中,\n 表示换到下一行,但不会回到行首;而 \r 表示光标回到行首,但仍在本行
<?php <<<EOD 这是 heredoc 语法结构 EOD ?>
<?php <<<'EOD' 这是 nowdoc 语法结构 EOD ?>
heredoc 和 nowdoc 语法结构和双引号与单引号的关系相似,heredoc 能够解析上面列出的特殊字符,nowdoc 不能够。heredoc 语法结构和 nowdoc 语法结构的结束标识符必须在行首。
整型
在 32 位操做系统中,有效的数值范围的 -2147483648~2147483647(书上这么写的),在 PHP7 (不要问我为何是 PHP7,由于我用 PHP7 测试的)中能够使用 PHP_INT_MAX
和 PHP_INT_MIN
来获取范围的最大最小值。整型能够使用十进制、二进制、八进制、十六进制来表示,使用八进制,须要在数字前面加上0,使用十六进制须要在数字前面加上0x。
<?php echo 123; // 正数 echo -123; // 负数 ?>
<?php echo 0b10011; ?>
<?php echo 0123; ?>
在八进制中,若是出现非法数字 8,9这些,程序会报错(PHP7 中是这样)
<?php echo 0x123; ?>
整数溢出
若是给定一个数超出了 integer 的范围,会被解释为 float。
不要将未知分数强制转换为 integer
<?php echo (int)( (0.1 + 0.7) * 10 ); // 结果是 7 ?>
浮点类型
浮点类型默认有两种格式,标准格式的科学记数法格式
<?php $float = 3.1415; $float2 = -23.3; $float3 = 2.34E2; echo pi(); // 圆周率 ?>
浮点型数值只是一个近似值,要尽可能避免浮点数比较大小
数组 array
数组的定义:
<?php $arr = array( $key => $val, ... ); // 或 $arr = [ $key => $val, ... ]; ?>
数组的取值:
<?php echo $arr[$key]; ?>
数组 key 的强制转换
- 包含合法的十进制整数值的字符串会被转换成整数值,例如 "3" 会转换成 3,而 "03" 则不会转换成 3
- 浮点数也会强制转换为整型,方式为向下取整,例如 2.3 会转换成 2
- 布尔值中 true 会转换为 1,false 转换为 0
- Null 会转换为空字符串""
若是在数组中定义了相同的键名,只使用最后一个
对象 object
类的实例,使用 new 关键字建立。
<?php class Foo { protected $name = 'class'; public function show() { echo $this->name; } } $obj = new Foo(); // 这是的 obj 就是一个对象,是从 Foo 这个类实例化来的 ?>
资源类型 resource
手册上解释的是:它是保存了外部资源的一个引用。
NULL
表示一个变量没有值,如下状况会被认为是 NULL
转换操做符 | 转换类型 |
---|---|
(boolean) | 布尔类型 |
(string) | 字符串类型 |
(integer)/(int) | 整型 |
(float) | 浮点型 |
(array) | 数组 |
(object) | 对象 |
(unset) | NULL(PHP5) |
还能够使用 settype(mixd var, string type) : boolean 函数对类型进行转换,第一个参数是要转换的变量,第二个参数是要转换的类型,支持:boolean, float, integer, array, null, object, string。转换成功返回 true,失败返回 false。
PHP 中内置了检测数据类型的系列函数,判断一个变量是否属于某个类型,是的话返回 true,不是返回 false。
函数 | 检测类型 |
---|---|
is_bool(mixed var) : boolean | 布尔 |
is_string(mixed var) : boolean | 字符串 |
is_float(mixed var) : boolean/is_double(mixed var) : boolean | 浮点型 |
is_integer(mixed var) : boolean/is_int(mixed var) : boolean | 整型 |
is_null(mixed var) : boolean | NULL |
is_array(mixed var) : boolean | 数组 |
is_object(mixed var) : boolean | 对象 |
is_numeric(mixed var) : boolean | 数字或由数字组成的字符串 |
常量是一个简单的标识符,在脚本运行期间不容许改变。
常量的定义
使用 define() 函数,语法格式:
define(string constant_name, mixed value, boolean case_sensitive = false);
define() 函数说明:
参数 | 说明 |
---|---|
constant_name | 必须,常量名 |
value | 必须,常量值 |
case_sensitive | 可选,指定是否大小写敏感,默认为 false,表示敏感 |
常量的取值
一是直接使用常量名取值,另外一种是使用 constant()
函数取值。
判断一个常量是否已经定义
使用 defined() 函数判断一个常量是否已经定义,若是定义了则返回 true,不然返回 false。
PHP 中经常使用的预约义常量
常量名 | 功能 |
---|---|
__FILE__ | PHP 程序文件名 |
__LINE__ | 当前所在行 |
PHP_VERSION | PHP 版本 |
PHP_OS | 执行 PHP 解析器的操做系统 eg. WINNT |
E_xxx | PHP 的错误调试部分,参考 error_reporting() 函数 |
变量是在程序执行过程当中能够变化的量,用一个美圆符号后面跟上变量名表示,区分大小写。
变量名必须以字母或下划线开头,后面跟上数字、字母、下划线,不能包含特殊符号,也不能以数字或其它特殊符号开头。变量能够是中文,但不建议使用。
$this 是一个特殊的变量,不能被赋值
<?php // 变量的声明 $foo = 'variable'; $foo1 = 'var'; // $1_a = '1a'; // 变量名不合法 // $@abc = 'abc'; // 变量名不合法 $var = $foo; // 使用 $foo 给变量 $var 赋初值 $var2 = &$foo; // 引用赋值 $var2 = 'var2'; // 改变 $var2 的值 var_dump($foo); // $foo 的值也会改变 var_dump($var); // $var 的值仍是 variable ?>
变量必须在有效的范围内使用,超出变个范围,变量就失去的意义。
全局变量不能被函数直接使用,若是要使用,必须在函数中声明为 global
// 变量做用域 $a = 1; function test() { echo $a; // 这里不会有任何输出,调用的局部的变量 $a var_dump($a); // 打印结果显示 NULL } test(); // 全局变量在函数内部使用的时候,必须使用 global $b = 2; function test2() { global $b; // 声明为 global echo $b; // 结果为 2 } test2(); // 使用 $GLOBALS 代替 global $c = 3; function test3() { $GLOBALS['c'] = 5; // 使用 $GLOBALS 代替 global } test3(); echo $c; // 显示结果为 5
通常来讲,在函数中声明的变量,在函数运行结束时,就会自动被清除掉,使用静态变量则会被保留。
// 静态变量 function static_var() { static $d = 1; echo $d++; } static_var(); // 显示 1 static_var(); // 显示 2
用一个变量的值,做为另外一个变量的变量名。
// 可变变量 $e = 'f'; // 变量值为 f $$e = 'I am f'; // 至关于 $f = 'I am f'; echo $f;
// 预约义变量 dump($GLOBALS); // 全局做用域中所有变量 dump($_SERVER); // 服务器和执行环境信息 dump($_GET); // HTTP GET 变量 dump($_POST); // HTTP POST 变量 dump($_FILES); // HTTP 文件上传变量 dump($_REQUEST); // HTTP REQUEST 变量 dump($_SESSION); // session 变量 dump($_COOKIE); // cookies dump($_ENV); // 环境变量 dump($php_errormsg); // 前一个错误信息 dump($HTTP_RAW_POST_DATA); // 原生 POST 数据 dump($http_response_header);// http 响应头 function dump($var) { echo '<pre>'; print_r($var); echo '</pre>'; }
运算符是能够经过给出的一个或多个值,得出另外一个值的东西。
从上到下,优先级下降。
运算符 | 结合方向 |
---|---|
clone, new | 无 |
**[乘方运算符] | 右 |
++, --, ~[取反减1], (int), (float), ..., @ | 右 |
instanceof | 无 |
! | 右 |
*, /, % | 左 |
+, -, . | 左 |
<<, >> | 左 |
<, <=, >, >= | 无 |
==, !=, ===, !==, <>[至关因而 !=], <=>[a <=> b,若是a > b,返回1,相等返回0,不然返回-1] | 无 |
&[按位与] | 左 |
[1] | 左 |
| | 左 |
&& | 左 |
// | 左 |
?? | 右 |
按位异或 ↩︎