目录
PHP简介
什么是PHP
网站基本概念
网站
静态网站特点
动态网站特点
服务器概念
IP
域名
DNS
端口
PHP基础知识
PHP语法
PHP注释
PHP语句分隔符
变量
变量基本概念
变量的使用
命名的命名规则:
预定义变量:
可变变量
变量传值
常量
常量的基本概念
常量的定义形式
常量的命名规则:
常量的使用
系统常量
魔术常量
数据类型
PHP的八种数据类型
简单数据类型:
复合数据类型:
特殊数据类型:
类型转换
类型判断
运算符
运算符优先级
赋值运算符
算数运算符
比较运算符
逻辑运算符
连接运算符*
错误抑制符*
三目运算符
自操作运算符
计算机码
位运算符
PHP定义:一种服务器的HTML脚本/编程语言,是一种简单的、面相对象的、解释型的、健壮的、安装的、性能非常之高的、独立架构的、可移植的、动态的脚本语言。是一种广泛用于Open sourcue(开放源代码)的尤其适合Web开发并可以嵌入HTML的多用途脚本语言。它的语法接近C,Java和Perl ,而且容易学习、该语言让Web开发人员快速的书写动态生成的网页。
PHP 前身:personal HomePage ,个人主页,使用Perl语言开发的一种写个人主页的语言
PHP:PHP Hyper text Preprosessor,php长文本预处理器,底层使用的是c语言
Website的中文名称是网站,是指的在互联网上,根据一定的规则,使用HTML、PHP等代码语言制作的用于展示特定内容的相关网页的集合,有可供管理人员操作的后台及用户使用的琴台。简单的说,Website是一种通讯工具,就像布告栏一样,人们可以通过Website来发布自己想要公开的咨询,或者利用Website来提供相关的网站服务。人们可以通过网页浏览器来访问Website,获取自己需要的资讯或者享受网络服务。
网页内容以经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件。
静态网页的内容相对稳定,因此容易被搜索引擎检索
静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难
静态网页的交互性较差,在功能方面有着较大的限制
交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后Web发展的潮流
自动更新:即无需手动更新HTML文档,便会自动生成新页面,可以大大的节省工作量
因时因人而变;即当不同时间、不同用户访问一网址时候会出现不同页面。
此外动态网页是与静态网页相对的,也就是说,网页URL的后缀不是.html/.htm/shtml/xml 等静态网页的常见形式,而是以asp/jsp/php/perl/cgi等形式为后缀。在=动态网页网址中有一个标志性的符号---"?"
服务器(server)也称为伺服器,是提供计算服务的设备。由于服务器需要相应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括:处理器、硬盘、内存、系统总线等等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器、应用程序服务器,WEB服务器等等。
IP(Internet Protocol)网络之间互联协议。网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性。(每台电脑都有一个唯一的IP地址)
域名(Domain Name ),是由一串用点分隔的名字组成(www.itcast.cn)的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具” 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称。
特殊IP:127.0.0.1,代表本机
特殊域名:localhost,代表本机
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
用户输入域名localhost—>DNS(localhost 127.0.0.1)-->服务器电脑
端口(Port),可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。(一台带电脑上区分不同软件的方法)
用户输入域名localhost:端口—>DNS(localhost 127.0.0.1)-->服务器电脑—>软件(服务)
PHP是一种运行在服务器的脚本语言,可以嵌入到HTML中。
在PHP历史发展中,可以使用多种标记来区分PHP脚本
ASP标记:<% php代码 %>
短标记: php代码 ?>
脚本标记:
例如:
标准标记(最常用):
例如:
写注释是一个好习惯:所有代码在写的过程中都必须进行注释。
PHP中注释分为两种,行注释和块注释
行注释:一次注释一行,
//:后面跟的所有内容都是注释
#:效果相同
块注释:一次注释多行
/* 中间全部都是注释 */
语句分割符:在PHP中,代码以行为单位,系统需要通过判断行的结束,该结束通常都是一个符号:分号;(英文)
定义内容:
$a=5;
echo "hello World";
PHP是一种动态网站开发的脚本语言,动态语言特点是交互性,会有数据的传递。而PHP作为中间人,需要进行数据传递,传递的前提就是PHP能够自己存储数据(临时存储)
变量来源于数学,是计算机语言中能存储计算结果或者表示抽象概念。变量可以通过变量名访问。在指令语言中,变量通常是可变的
定义:在系统中增加变量名字(内存开辟空间)
赋值:可以将数值赋值给变量
这两者可以同时进行。
可以通过变量名访问存储的数据
可以将变量从内存中删除
在PHP中便令名称都是以$字符开头的
名字由字母数字下划线构成,不能以数字开头
在PHP中还允许中文变量命名(但是不建议)
提前定义的变量(即系统定义的变量),存储许多需要用到的数据(都是数组)
$_GET:获取所有表单以get方式提交的数据
$_POST:获取所有变淡以POST方式提交的数据
$_REQUEST:GET和POST提交的都会保存
$GLOBALS:PHP中所有的全局变量
$_SERVER:服务器信息
$_SESSION:Session会话数据
$_COKKIE:cokkie会话数据
$_ENV:环境信息
$_FILES:用户上传的文件信息
如果一个变量保存的值刚好是另外一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值:在变量前面多加一个$符号。
例如:
将一个变量赋值给另外一个变量;变量传值
有两种方式:
值传递:将变量的值赋值一份,然后将新的值给另外一个变量保存
引用传递:将变量保存的值所在的内存地址,传递给另外一个变量(两个白能量指向同一块内存空间)
在内存中,通常有以下几个分区:
栈区:程序可以操作的内存部分(不存储数据,运行程序代码),少但是快
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局和静态区)
堆区:存储复杂数据,大但是效率很低
常量与变量一样都是用来保存数据的
常量是一种不可以改变的量(数据)
PHP有着两种定义方式
1、使用定义常量函数 define (常量名 ,常量值 )
2、const 关键字定义常量
常量不需要使用$符号,一旦使用就会被视为变量
常量的命名规则与变量一致
常量的名字通常以大写字母为主
注意:
Define和const定义的常量是有区别的:在于权限不同凡是数据会可能改变的,那么肯定使用变量
数据不一定会变的,可以使用变量或者常量
数据不会变的一定是使用常量
系统帮助用户定义的常量,用户可以直接使用
PHP_VERSION:PHP版本号
PHP_INT_SIZE:整型大小
PHP+INT_MAX:整型能表示的最大值
在PHP中还有一些特殊的常量,他们有双下划线开始+常量+双下划线结束,这种常量称为系统魔术常量:魔术常量的值通常会跟着环境变化,但是用户改变不了。
_ _ DIR _ _:当前被执行的脚本所在电脑的绝对路径
_ _ FILE _ _:当前被执行的脚本所在电脑的绝对路径(带自己文件的名字)
_ _ LINE _ _:当前所属的行数
_ _ NAMESPACE _ _:当前所属的命名空间
_ _ CLASS _ _:当前所属的类
_ _ METHOD _ _:当前所属的方法
数据类型,data type ,在PHP中指的是存储的数据本身的类型,而不是变量的类型。PHP是一种弱类型语言,变量本身没有数据类型。
整形:int/integer 4字节存储数据
整形的四种定义形式:
十进制:$a=120
二进制:$a=0b120
八进制:$a=0120
十六进制:$a=0x120
浮点型:float/double 8字节
浮点型定义有两种形式:
小数形式:$f=1.23
科学计数法:$d=1.23e10
字符串型:string,根据实际长度分配
布尔类型:bool/boolean true 和false
在进行某些数据判断时,需要特别注意类型转换
Empty():判断数据的值是否为空,不是NULL,如果为空则返回true,不为空返回false
isset():判断数据存储的变量本身是否存在。存在变量返回true,不存在返回false
对象类型 object,存放对象
数组类型 array,存放多个数据
资源类型:resource ,存放资源文件(PHP外部数据)
空类型:NULL
在PHP中有两种类型转换方式:
自动转换:系统根据自己的需求自己判定,自己转换(用的较多,效率偏低)
强制(手动)转换;认为根据需要的目标类型转换
在转换过程中,用的较多的就是布尔类型(判断)和转数值类型(算数运算)
强制转换的规则:在变量之前加一个(),然后在里面写上需要强制转换的类型;
其他类型转数值的说明:
1、布尔true为1,false为0
2、字符串转数值有着自己的规则
3、以字母开头的字符串永远为0
4、以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)
例如:
通过一组判断函数,来判断变量,最终返回这个白能量所保数据的数据类型(是:true,不是:false):是一组以is_开头后面跟着类型名字的函数:is_xxx(变量名)
Bool类型不能使用echo来查看,可以使用var_dump结构来查看
格式:var_dump(变量1,...)
例如:
还有一组函数可以用来获取以及设定数据(变量)的类型
Gettype(变量名):获取类型,得到的是该类型对应的字符串
Settype(变量名,类型):设定数据类型:与强制转换不同
1、强制转换(类型)变量名,是对素具值复制的内容进行处理(不会处理实际存储的内容)
2、settype会直接改变数据本身
例如:
运算符优先级:在多种运算符同时存在的时候,如何结合运算
符号为“=”,表示将右边的结果(可以是变量、数值、表达式、函数的结果),保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量(常量)。
基本的算数操作:
+:数据累加
-:数据相减
*:两数值相乘
/:除法运算
%:取余运算符,两个数相除,保留余数
比较运算:比较两个数据的大小,或者两个内容是否相同,返回的结果都是布尔类型:满足返回true,不满足返回false
>:左边大于右边,返回结果true
>=:左边大于等于右边
<:左边小于右边
<=:左边小于或者等于右边
==:左边的与右边的相同(大小相同)
!=:左边的与右边的不同(大小不同)
===:全等于,左边与右边相同:大小以及数据的类型都要相同
!==:不全等于,只有大小或者类型不同
逻辑运算:针对不同的结果进行匹配。满足条件返回true,不满足返回false
&&:逻辑与,左边的条件与右边的条件同时成立(两边结果都为true)
||:逻辑或,左边的条件或者右边的条件只要有一个满足即可
!:逻辑非,对已有条件进行取反,本身为true,取反结果就是false
逻辑与和逻辑或又称之为短路运算:如果第一个表达式结果已经满足条件了,那么就不会运行逻辑运算符后面的表达式:在书写代码的时候,尽量将出现概率最高的(能够直接判断出结果)的表达式放到第一位
连接运算:是PHP中将多个字符串拼接的一种符号
. :将两个字符串连接到一起(相当于JavaScript中的“+”)
.= : 复合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边变量
A .= b ===== A = A . b
在PHP中有一些错误可以提前预知,但是这些错误可能无法避免,但是又不希望报错给用户看,可以使用错误抑制符处理。
@:在可能出错的表达式前面使用@符号即可
错误抑制符通常在生产环境(上线)会用到,在开发的时候不会用:系统本身最好没有任何错误。
例如:
这里使用0作为被除数会直接报错;
可以在错误表达式前着增加一个@符号进行错误抑制
三目运算:有三个表达式参与的运算(简单的的分支结构缩写)
语法格式:
表达式1 ? 表达式2 :表达式3;
运算:如果表达式1成立,那么执行表达式2,否则执行表达式3;
注意:如果表达式本身比较复杂,建议使用括号包起来。
三目运算可以进行复合三目运算:三目运算中的表达式2和3都是可以是另外一个三目运算。
表达式1 ? (表达式2 ? 表达式4 : 表达式5) : (表达式3 ? 表达式5 : 表达式6);
自操作:自己操作自己的运算符
++:在原来的值上+1
--:在原来的值上-1
$a = 1;
$a++; // $a = $a + 1;
在PHP中自操作符是可以放到变量前或者后:前置自操作和后置自操作
$a = 1;
$a++;
++$a; //前置或者后置如果本身只有自操作,不参与其他运算(自操作同时),那么效果是一样的。但是如果自操作同时还参与别的运算,那么效果就不一样
$a = 1;
$b = $a++; //$a++会导致$a = $a + 1; $a = 2;,上面的$b = 1
$c =++$a; //++$a会导致$a = $a + 1; $a = 2;,$c = 2;
后置自操作:先把自己所保存的值留下来,然后改变自己,自己给别人的值是原来的值;
前置自操作:先把自己改变,然后把改变后的值给别人。
衍生符号:类似自操作
+=:左边的结果与右边结果相加,然后赋值给左边
-=:左边的减去右边的结果,然后复制给左边
*=:乘法操作
/=:除法操作
%=:模操作
注意:右边是一个整体 $a += $b; =è $a = $a + ($b);
如果进行除法或者取余运算,那么要考虑右边表达式的结果是否为0(为0出错)
计算机码:计算机在实际存储数据的时候,采用的编码规则(二进制规则)
计算机码:原码、反码和补码,数值本身最左边一位是用来充当符号位:正数为0,负数为1
原码:数据本身从十进制转换成二进制得到的结果
正数:左边符号位为0(正数的原码、反码和补码就是原码本身)
负数:左边符号位为1
反码:针对负数,符号位不变,其他位取反
补码:针对负数,反码+1
系统中存在两个0:+0和-0
+0: 00000000
-0: 10000000 原码
取反 11111111
补码 00000000
位运算:取出计算机中最小的单位(位bit)进行运算
&:按位与,两个位都为1,结果为1,否则为0
|:按位或,两个有一个为1,结果为1
注意:
1、 系统进行任何位运算的时候都是使用的补码
2、 运算结束之后都必须转换成原码才是最终要显示的数据
~:按位非,一个位如果为1则变成0,否则反之
^:按位异或,两个相同则为0,不同则为1
<<:按位左移,整个位(32位),向左移动一位,右边补0
>>:按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)
按位左移:乘以2的操作
按位右移:除以2的操作(不完全正确):整数除2会出现小数