PHP中的数据转换、类型约束
2017-03-19 本文已影响32人
kangyiii
数据转换
转换基本语法:(目标类型)数据;
<?php
$arr = array('a1'=>1,'bb'=>2.2,3,4.5);
$o1 = (object)$arr;
var_dump($o1);
?>
- 对象转换为对象:没有变化
- 数组转换为对象:数组的键名当作属性名,值为对应值
如果是数字下标,对应属性不方便获取,所以通常适合于纯字符下标的数组。 - null转换为对象:空对象
输出结果:object(stdClass)#2 (0) { }
- 其他标量数据转换为对象:属性名为固定的"scalar",值为该变量的值
$s1 = 1;
$s2 = 2.2;
$s3 = 'abc';
$s4 = true;
$obj1 = (object)$s1;
$obj2 = (object)$s2;
$obj3 = (object)$s3;
$obj4 = (object)$s4;
echo "<pre>";
var_dump($obj1,$obj2,$obj3,$obj4);
echo "</pre>";
打印结果
类型约束
其他语言中,类型约束是语法上的要求,定义一个变量的时候,必须指定类型,类型一旦确定,这个变量只能存储这个类型的数据,这是强类型语言的特点。但PHP是弱类型语言,无需为变量指定类型。
在PHP较新的语法中,在某些特定的场合,针对某些特定类型,也可以进行语法约束:
- 场合:函数(或方法)的形参变量
- 类型:对象类型(类名)、接口类型(接口名),数组类型(array),函数类型(callable)
示例1:方法参数中类型约束为为A(类名)
function f1( A $p1){
echo "<br/>";
var_dump($p1);
}
示例2:方法参数中类型约束为数组
function f2(array $a){
$c = count($a);
return $c;
}
$r1 = f2(array(1,2,3,4,5,56));
echo "<br/>长度为".$r1;