判断数据类型、运算符
//判断数据类型:一组下划线is_开头跟着类型名字函数:is_XXX(变量名),返回布尔类型
//布尔类型不能用echo来查看。用var_dump结构查看
$a='abc';
$b='12';
var_dump(is_int($a));
var_dump(is_string($a));
//确定数据是安全的
//还有一组函数可以用来获取以及设定数据(变量)的类型
//Gettype(变量名):获取类型,得到的是该类型对应的字符串
echo gettype($a);
//Settype(变量名,类型):设定数据类型与强制转换不同
var_dump(settype($b,'int'));
echo gettype($b),$b;
//1.强制转换(类型)变量名,是数据对复制内容进行处理(不会处理实际内容)
//2.settype会直接改变数据本身
//整数类型:4个字节,最大32位:42亿
//在php中默认是有符号类型
//在php中题中四种的整型的定义方式:十进制,二进制,八进制,十六进制
$a1=120;//十进制
$a2=0b110;//二进制
$a3=0120;//八进制
$a4=0x110;//十六进制
echo $a1,'~',$a2,'~',$a3,'~',$a4;
//进制转换
//10转2:decbin()
//10转8:decoct()
//10转16:dechex()
//2转10:bindec()
var_dump(decbin(107));
//浮点类型:小数类型以及超过整数所能存储的范围(不保证精度),精度范围大概在15个有效数字左右
//尽量不要用浮点数作精确计算
//定义方式:$f=1.23; $1.23e10;(科学计数法,其中e表示底为10)
$f1=1.23;
$f2=1.23e10;
$f3=PHP_INT_MAX+1; //整型超过自身大小之后会用浮点型存储
var_dump($f1,$f2,$f3);
//浮点判断
$f4=0.7;
$f5=2.1;
$f6=$f5/3;
var_dump($f4 == $f6);
//布尔类型:通常利用判断
$b1=true;
$b2=false;
//在进行数据判断的时候,需要特别注意类型转换
//empty()判断数值是否为空,空为true
//is_null() 判断变量本身是否存在
$a = '123';
$b = 123;
//判断相等
var_dump($a == $b);
//判断全等
var_dump($a === $b);
/*
逻辑算符
&& 逻辑与
|| 逻辑或
!逻辑非
注,逻辑与与逻辑非是短路运算,如果第一个表达式以及满足条件,那么就不会运行运算符后面的表达式:
在书写表达式的时候,尽量将出现频率最高的(能够直接判断除结果)的表达式放在第一位
*/
$a = 'weekend';
$b = 'good';
var_dump($a == 'weeken' && $b == 'good');
var_dump($a == 'weeken' || $b == 'good');
var_dump($b =='good');
var_dump(!($b == 'good'));
/*
连接运算符:是PHP中多个字符串拼接在一起的一种符号
.:将两个字符串连接到一起
.=:符合运算,将左边的内容与右边的内容连接起来,然后从新复制给左边变量
*/
$a = 'hello';
$b = 123;
echo $a . $b;
$a .=$b;//$a = $a .$b
echo $a;
/*
错误抑制符
有些错误可以提前阈值,但是这些错误无法避免,但又不希望报错给用户看,可以使用错误抑制符处理
@:在额能出现错误的表达式面前使用@符号即可
*/
$a = 10;
$b = 0;
@($a / $b);
//错误抑制符通常在生产环境(上线)会用到,子啊开发的时候不会用,系统本身最好没有任何错误
/*
三目运算符:有三个表达式参与运算(简单的分支结构缩写)
三目表达式中表达式2和3都是可以是另外一个三目运算
例如:表达式1?(表达式2?表达式4:表达式5):表达式3;
*/
$a =10;
$b = $a >10 ? 100 : 0;
echo $b;
/*
自操作运算符
++:在原来的值上+1
–:在原来的值上-1
*/
$a=1;
$a++; //$a = $a + 1
//自操作运算可以放在变量前后,
//变量只有本身自操作,那么前后效果一样
$a=1;
$b=$a++; //$a=$a+1;$a=2;
$c=++$a; //$a=$a+1;$c=1;
//变量还参与别的运算的话,后置先把自己的值保存下来,然后改变自己,自己给出别人的值是原来的值,前置相反。
$a=$b=1;
echo '<br>';
echo $a++,++$b;
?>