PHP变量与数据类型
2020-07-28 本文已影响0人
江湖快递猫
变量命名
-
变量名可以由字母数字下划线组成,不能使用数字开头
-
不能使用PHP的关键字
-
也可以使用中文
变量声明
- 使用数字开头
$1a = 'a';//报错,Parse error: syntax error, unexpected '1' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$'
- 变量通常在声明时赋值
$a = 'a';
echo $a;//输出为a
- 变量只声明不赋值时,默认值为NULL,但是会报错,提示未定义的变量名。
$a;
var_dump($a);//输出为null,会报错:Notice: Undefined variable: a
- 变量声明关键字var只能用于在类中声明变量,其他情况会报错
//在类外声明
var $a = 'a';//报错:Parse error: syntax error, unexpected 'var' (T_VAR), expecting end of file
//在类中声明
class A
{
var $a = 'a';
}
$A = new A();
echo $A->a;//类外调用,输出a,因此为公共属性
- 可变变量,当变量存在多个$符号时,PHP会从右向左解析变量
$b = 'a';
$a = 'b';
echo $$b;//输出为b
- 函数变量,也叫匿名函数,即将函数赋值给一个变量
$a = function(){
echo "a";
};//注意加分号,否则会报错
$a();//函数调用,输出a
数据类型
-
伪类型 是 PHP 文档里用于指示参数可以使用的类型和值,只用于文档说明使用
1. mixed 说明一个参数可以接受多种不同的(不一定是所有的)类型。 2. number 说明一个参数可以是 integer 或者 float。 3. callback说明参数类型是回调类型 4. array|object 意思是参数既可以是 array 也可以是 object。 5. void 指定函数的返回类型为空,即该函数不返回值。 //下面为伪变量 ... 在函数的参数列表中使用,...表示等等的意思。表示该函数接收任意数量的参数。
-
数据类型
1. 整型 2. 浮点型 3. 字符串型 4. 布尔型 5. 数组 6. 对象 7. 资源 8. 空(null|NULL)
- 整型:即整数,包含2进制、8进制、10进制、16进制
$binary = 0b11;//2进制
$octal = 011;//8进制
$decimal = 11;//10进制
$hexaDecimal = 0x11;//16进制
var_dump($binary,$octal,$decimal,$hexaDecimal);//3,9,11,17
字符串转整型函数:intval($var,$base)//$val为转换的字符串,$base为转换的进制
//当第一个参数为整型时,第二个参数失效,返回值为该值对应的10进制数值
intval(0x11, 2);//17
//输出结果为【11】的2进制对应的十进制数值3
intval('11',2);//3
//字符串有可能返回 0,取决于字符串最左侧的字符(非数字或0)
intval('0x11');//0
intval('0x11',2);//0
- 浮点型:即小数,代表小数点可以任意浮动
//浮点型不能进行计算操作或者比较
var_dump(22.23 - 11.11 - 11.11);//理论上应该等于0.01,实际上输出为0.010000000000002
解决方法1:
先取整再整除:var_dump((22.23*100 - 11.11*100 - 11.11*100)/100);//输出为0.01
解决方法2:
使用浮点函数计算:var_dump(floatval(bcsub(bcsub(22.23,11.11,2),11.11,2)));//输出为0.01
- 字符串:由0或多个字符组成的有效序列
定义方式:
1.使用单引号(不能解析变量)$a = 'a';
2.使用双引号(可以解析变量):$a = "a";
3.使用定界符(从开始标志到结束标志都会当作字符串)
3.1 heredoc 效果与双引号一致
3.2 nowdoc 效果与单引号一致
字符串拼接:
$a = 'a';$b = 'b';
1.使用.符号进行拼接: echo $a.$c;//ab
2.使用双引号拼接: echo "$a$c";//ab
3.使用{}规定要解析的变量:
//不使用{}时
echo "$ab$b";//$ab当成了变量解析,报错,未定义的变量
echo "{$a}b{$b}";//abb
//也可以写成这样
echo "${a}b${b}";//abb
- 布尔型:true 或 false
//使用双等号进行比较时,以下情况相等
var_dump(0 == false);//0
var_dump(0.0 == false);//空字符串
var_dump("0" == false);//空字符串
var_dump(null == false);//null
var_dump([] == false);//空数组
var_dump("" == false);//空字符串
var_dump('' == false);//空字符串
//负数不等于false
var_dump(-1 == false);//false
//空对象不等于false
var_dump(new stdClass() == false);
- 数组
定义方式:
1.使用[]:$a = ['a'];
2.使用array: $a = array('a');
分类:
1.索引数组:带有数字索引的数组
2.关联数组:带有指定键的数组
3.多维数组:包含一个或多个数组的数组
- 对象:是类的实例
简单示例:$obj = new stdClass();
-
资源:保存了到外部资源的引用的数据类型。常见的有数据库连接句柄、文件句柄等等。
-
null
值为NULL的几种情况:
1.声明未赋值的变量
2.声明并赋值为null的变量
3.销毁之后的变量