对象类型object
在php中,对象跟js中的有比较大的区别。
通常,js中的对象,有自定定义的(创建的),也有“现成”,比如window,location,标签对象。
但:
php中的对象,通常都是指自己定义的对象,纯语法的。
资源类型resource
含义:基本上都是指对外部数据的引用。(数据非php代码生成的)
不是PHP语言通过某种语法形式“创造”的数据,而是外部本来就有该数据(比如数据库,文件,图片),PHP只是通过某种语法(或方式)来对其进行某些操作。空类型null
只是一个计算机中编程领域的“概念”类型,只是为了表达变量所存储的数据的某种特殊情形所创建的概念——没有存数据,或没有存有效的有意义的数据
类型转换
自动转换:
通常自动转换是弱类语言的一个最基本也最方便的一个特征:它会在各种运算中根据运算符的需要也将非该运算符所能处理的数据转换为可以处理的数据。常见情形如下:
if(数据){}:转为bool类型
算术运算符:转为数字类型
连接运算符:转为字符串类型 + .
比较运算符:转为布尔类型或数字类型
两边如果有至少一个布尔,则另一边就会转为布尔,并进行比较
否则,就转为数字进行比较
特别常用的一个转换(不管是自动转换还是强制转换),就是字符串转换为数字:
“5” ==>> 5 //整数
“5.5” ==>> 5.5浮点数
“5abc” ==>> 5整数
“5.5ab” ==>> 5.5浮点数
“abc5” ==>> 0整数
“abc” ==>> 0整数
“” ==>> 0
强制转换
就是通过语法来让某数据转换为另一种类型的数据,语法格式为:
(目标类型)数据;
注意:我们并不能使用该语法将任意类型的数据,转换为其他任意类型——因为有些类型之间的转换是没有意义的——系统内部也没有定义过该类型转换的规则。
——最常见的转换通常就发生在基本(标量)数据类型之间。
与var_dump():能够输出一个变量的完整信息。
getType(类型相关的系统函数
):获取一个变量的类型名称,结果是一个单词(字符串), setType();设置一个变量的类型,语法: setType(变量名,目标类型)
isset(), empty(), unset();
isset()判断一个变量是否存在数据:
empty()判断一个数据是否为空:接近我们的日常观念(没有就是空)
unset():销毁(删除)一个变量。
is_XX类型() 系列函数:判断某个数据是否是某种类型,包括:
is_int(), is_float(), is_numeric(),is_bool(), is_array(), is_scalar():
is_numeric()对:3, 3.5,“3”,“3.14”判断都是true
is_scalar():判断是否为标量类型(即int,float,stirng,bool)
运算符
字符串拼接 php中用 .
运算符
算术运算符
有以下几个:+ - * / % ++ --
注意:注意取余运算%,先取整,再取余
$v1 = 7.5 % 3; //结果是:1
$v2 = 7.5 % 3.5; //结果是:1
对比js中:——js中, 不会进行取整处理
var v1 = 7.5 % 3; //结果是:1.5
var v2 = 7.5 % 3.5; //结果是:0.5
自增自减运算符:
常规:对数字进行自加1或自减1。
字符串: 只能自增,且自增的效果就是“下一个字符”
布尔值递增递减无效
null递减无效,递增结果为1
前加加和后加加的区别:
前++:先完成变量的递增运算,再取得该变量的值参与别的运算。
后++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算。
推论1:如果独立语句中进行自加运算,前自加后自加没有区别 。
推论2:如果前自加后自加是放在别的语句中,则会有所区别。
推论3: 前加加比后加加效率略高(在循环中建议使用前加加)。
比较运算符:
包括:> >= < <= ==松散相等 != ===严格相等 !==
==和===的区别:
==:松散相等,比较的是两个数据“类型转换之后”是否有可能相等,也常常认为是“数据内容是否相同”
===:严格相等,全等,只有两个数据的类型和数据的内容都完全一致,才相等。
严重推荐参考手册〉〉附录〉〉类型比较表。
常见不同类型的比较(主要指标量类型的数据)——非正常比较
正常比较——数字的大小比较
如果有布尔值,均转为布尔值比较:规则:true > false
否则,如果有数字,均转为数字比较:
否则,如果两边都是纯数字字符串,转为数字比较
否则,就按字符串比较
字符串的比较规则为:按字符的先后顺序依次一个一个比较,发现哪个大,则就表示整体大,后续不再比较