====================以上为一套课程。我的笔记是下面这一套==================================
(不全.可至爱奇艺:https://www.iqiyi.com/v_19rqrs2b2c.html?vfm=m_303_qqll 或者至官网下载下3套)
1天内容为XML语法格式与PHP对XML操作
2-6天内容为Javascript深度认识与高级操作
7-8天内容为AJAX客户端无刷新接收客户端数据
9-11天内容为jQuery框架(代码库)
12天内容为SVN客户端与服务端操作
============================笔记开始=====================================
1133:02 28天PHP零基础入门到精通教程(P1基础6天)
https://www.bilibili.com/video/av12863134
PHP标准标记:php代码格式如下
另有短标记和脚本标记,不建议使用。
PHP注释:
1、行注释:①//注释内容 ②#注释内容
2、块注释:/*注释内容(可注释多个段落)*/
语句分隔符:英文;号
语句结束符:在单独的php代码组成的php文件中,可以省略语句php语句结束符?>,php系统会自动在代码最末尾添加语句结束符。
变量:变量名前必须加$符号
1、定义:$变量名;如:$a;//定义变量
2、定义时赋值:如$a=1;//定义变量时赋值
3、删除变量,使用unset函数:如unset($a);//删除如上已定义的变量$a
变量命名规则
1.、以$符号打头;
2、【传统】名字由字母数字下划线构成,但不能以数字开头,注意字母区分大小写;
3、【扩展】变量名支持Unicode(如中文);
预定义变量:系统提前定义的变量,都是数组
$_GET:获取所有表单以get方式提交的数据。
$_POST:post提交的数据都会保存在此。
$_REQUEST:get和post提交的都会保存。
$GLOBALS:php中所有全局变量。
$_SERVER:服务器信息。
$_SESSION:会话信息。
$_COOKIE:cookie会话数据
$_ENV:环境信息
$_FILES:用户上传的文件信息
可变变量:
如果一个变量保存的值刚好是另一个变量的名字,那么可以直接通过访问变量得到另一个变量的值,在该变量前多加个$符号。例如:
$a='b';
$b='hello';
echo $$a;//输出$b的值hello。
//原理是$$a首先取出$a的值b,b再和第一个$结合成为$b,则表达式总值为$b。
变量传值:
1、值传递:将A变量的值复制一个副本,将副本赋值给B变量。A,B变量互相独立,没有关系;
如上图,当变量b值从1改变为2的时候,与变量a没有任何关系。
2、引用传递:将A变量保存的值所在的内存地址传递给B变量,则A,B变量指向同一块内存空间,两者指向同一数据,即A,B是同一物。
格式:$新变量 = &$旧变量;//&是取地址的意思
两种赋值对比的代码:
内存分区:
栈区:程序可以操作的内存部分(不存数据,运行程序代码),少,但是快。
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据,大,效率低。
常量:
常量:const/constant,一旦定义,值不可改变(用户级别)。
定义常量,有2种方式
1、使用定义常量的函数:define('常量名',常量值);
2、(php5.3以后):const 常量名=常量值;
常量命名规则:
1、常量不需要使用$符号;
2、命名规则同变量命名规则;
3、命名规范:常量命名以纯大写字母构成(与变量以示区别)。
4、例外,特殊常量:常量的命名比较松散,可以使用一些特殊的字符,但只能用define函数定义,如下图:
☆define函数和const定义常量有区别:在于访问权限区别。
☆define函数定义的常量可以是大小写敏感的,也可以是大小写不敏感的【不建议】,见php手册define函数参考
☆特殊符号定义的常量,例如define('-_-','smile');不能直接访问(例如:echo -_-;//这种写法语句错误!),须使用constant函数:echo constant('-_-');//这种写法是正确的
系统常量:
PHP_VERSION:php版本号
PHP_INT_SIZE:int占用字节大小
PHP_INT_MAX:int类型最大值
魔术常量:
系统中还有一些以双下划线开始+‘常量名’+双下划线结束的常量。魔术常量的值通常会跟着环境变化,但是用户改变不了。
__DIR__:当前被执行的脚本所在电脑的绝对路径
__FILE__:当前被执行的脚本所在电脑的绝对路径(带自己文件名)
__LINE__:当前所属的行数
__NAMESPACE__:当前所属的命名空间
__CLASS__:当前所属的类
__METHOD__:当前所属的方法
数据类型:
在php中指的是存储的数据本身的类型,而不是变量的类型。php是弱类型语言,变量本身没有数据类型(可以理解变量为万能变量,可以赋予任何类型的数据。其他高级语言有的有类似万能变量)
PHP的八种数据类型:分为三大类八小类
1、简单(基本)数据类型:4小类
①整型数据:int/integer:占4字节,表示整数类型(有前提)
②浮点型:float/double,占8字节,表示小数或整型存不下的整数
③字符串类型;string,系统根据实际长度分配。
④布尔类型:bool/boolean,值为ture或false
2、复合数据类型:
①对象类型:object,存放对象。
②数组类型:array,存放多个数据
3、特殊数据类型:
①资源类型:resource,存放资源数据(php外部数据,如数据库、文件)
②空类型:NULL,只有这一个值(不能运算)
类型转换
在很多条件下,需要指定的数据类型。需要外部数据类型转换成目标数据类型。
在php中有两种数据类型转换方式
1、自动转换:系统自己自动判定转换;
2、强制/手动转换:人为转换。方法:在变量前加一对括号(),在里面写上转换类型,如int...其中NULL类型用unset;
在转换过程中,用的比较多的是转布尔类型(判断)和转数值运算(算术运算)
其他类型转布尔的规则如下图:参考:PHP 类型比较表
其他类型转数值:
1、布尔:true为1,false为0;
2、字符串zh转数值有自己的规则:
①以字母开头的永远为0;
②以数字开头的字符串,取数字(不会同时包含2个小数点);
类型判断:
通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据数据类型。它们是一组以is_开头后面跟数据类型的函数:is_xxx(变量名),详见PHP参考手册
bool类型不能用echo来查看(因为无法确认是字符串true还是bool类型true),可以用var_dump()来查看。格式为:var_dump(变量1,变量2,……);
如上图判断$a(本例为字符串类型)是不是int类型(实际为不是,即false),$a是不是string类型(实际为是,即true)。根据实际结果输出真或假。
还有一组函数可以用来获取/设置数据(变量)的类型。
gettype(变量名):获取类型,得到表示该变量数据类型的字符串。
返回的字符串的可能值为:
settype(变量名,类型):设定该变量的数据类型。
type
的可能值为:
与强制转换不同:
1:强制转换:(类型)变量名:不改变变量本身数据类型,
$a="100";
$b=(int)$a;//$a为string类型,本身不改变;(int)$a为int类型;$b是(int)$a即int类型
var_dump($a,$b)//$a是字符串,$b是int类型
//输出结果:string(3) "100" int(100)
2:settype:会直接改变变量存储的数据本身。
$a="100";//$a为string类型
var_dump($a);//输出string(3) "100"
echo'
';
settype($a,'int');//$a从string类型变为int类型
var_dump($a);//输出int(100)
整数类型
在php中提供了4种定义整型的方式:10进制,2进制,8进制,16进制
$a1=110;//10进制
$a2=0b110;//2进制
$a3=0110;//8进制
$a4=0x110;//16进制
echo $a1,'~',$a2,'~',$a3,'~',$a4,'
';//注意:输出结果皆为10进制
进制转换:以下函数位于PHP参考手册Math 函数和字符串 函数部分
浮点类型:带小数的数和超过整型范围的整数(不保证精度),精度范围大概是15个有效数字。
以上是浮点数的几种表现方式。
注意:计算机中小数大多数情况下不准确(有时候也准)。如下图:
$f6=$f5/3即2.1/3=0.7;但$4(0.7)和$f6不相等!因为计算机中小数一般不准!所以不要用带小数的数做相等判断。
布尔类型:两个值true和false,通常用于比较判断。
在进行某些数据判断的时候,需要特别注意类型转换。
empty():判断数据的值是否为“空”,不是NULL。如果为空返回true,否则返回false。
isset():判断数据存储的变量本身是否存在,存在变量返回true,否则返回false。
参考:PHP 类型比较表
运算符:在php中有10种运算符 运算符参考
赋值运算符 =
算术运算符:+、 -、 *、 /、 %(取余、求模)
注意:和数学一样,被除数不能为0.
比较运算符:>大于、 >=大于等于、 <小于、 <=小于等于、 ==等于、 !=不等于、 ===全等于、 !===不全等于
注意【全等于】和【不全等于】比较的数据类型必须完全一致。
如上图,用等于运算符判断,$a,$b比较之前(如果数据类型不一致)系统会自动类型转换,转换后结果一致。故为true。
如上图,使用全等运算符判断,系统会判断$a和$b数据类型是否一致。本例不一致。故为false。
逻辑运算符:
逻辑运算:针对不同的结果进行匹配
&&:逻辑与。与。
!!:逻辑或。或者。
!:逻辑非。非。
【重要】短路运算!:如果【逻辑与】、【逻辑或】第一个表达式已经满足条件了,那么就不会运行后面的表达式(如果有的话)。规范建议:书写代码的时候,尽量将出现概率最高的(能够直接判断出结果)表达式放到第一位。
连接运算符:
连接运算:PHP中将多个字符串拼接成1个字符串。
.(英文点符号):将两个字符串拼接在一起。
.=(点等于):累加字符串。例如:$a.= $b;等价于:$a = $a + $b;
错误抑制符:
@:在可能出错的语句前使用@符号,这些错误将不会显示。
错误抑制符通常在生产环境使用,开发环境不会用。
三目运算符:
格式:表达式?表达式:表达式
表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE
时的值为 expr2,在 expr1 求值为 FALSE
时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE
时返回 expr1,否则返回 expr3。
Note: 注意三元运算符是个语句,因此其求值不是变量,而是语句的结果。如果想通过引用返回一个变量这点就很重要。在一个通过引用返回的函数中语句 return $var == 42 ? $a : $b; 将不起作用,以后的 PHP 版本会为此发出一条警告。
如上图,表达式1($a>10)不成立,则执行表达式3.
自操作运算符:++自增、--自减
前置和后置的区别:后置,使用原值参与其他运算,运算结束后自操作;前置,直接自操作改变原值,再参与其他运算。
上图$a和$b的自增运算皆不参与其他运算,因此最后值都为2.
如上图,执行echo $a++,++$b;输出2和3。注意【($a++)的值】是$a原值【2】,执行完$a++【之后】,【$a才自增变成3】.
自操作衍生:操作符=,例如:+=,-=,*=,/=,%=