数组换位置一.介绍 PHP(外文名:PHP: Hyperte(24)
用foreach语句进行遍历(只能遍历可访问的属性)
<?php
class C1{
public $v1 = 1;
protected $v2 = 2;
private $v3 = 3;
public function fetchAllProp(){
foreach($this as $key => $value){
echo "$key => $value".PHP_EOL;
}
}
}
$o1 = new C1();
//只有1
foreach($o1 as $key => $value){
echo "$key => $value".PHP_EOL;
}
echo "---".PHP_EOL;
//有1,2,3
$o1->fetchAllProp();
stdclass:该类内部没有定义任何属性,但我们还是可以使用该类的属性(不存在的属性)
<?php
var_dump($obj = new stdclass());
$obj->v1 = 1;
$obj->v2 = 2;
var_dump($obj);
对象转换为对象:没有变化
数组转换为对象:数组的键名当作属性名,值为对应值(数字下标的属性无法用"->"操作)
null转换为对象:空对象
其他标量数据转换为对象:属性名为固定的“scalar”,值为该变量的值
<?php
var_dump($o_arr = (object) array("v1" => 1,"v2"=>2,3,4));
var_dump($n_arr = (object) null);
var_dump($n_arr = (object) 1);
php是弱类型语言,其特点是无需为变量指定类型,而且在其后也可以存储任何类型。
但在php的较新的语法中,在某些特定场合,针对某些特定类型,也可以进行语法约束。
特定场合:函数(或方法)的形参变量
特定类型:对象类型(类名),接口类型(接口名),数组类型(array),函数类型(callable)
<?php
class C1{}
interface I1{}
class C2 implements I1{}
function f1(C1 $v){//只能传该类的对象
var_dump($v);
}
function f2(I1 $v){//只能传实现该接口的类的对象
var_dump($v);
}
function f3(array $v){//只能传数组
var_dump($v);
}
function f4(callable $v){//只能传函数
var_dump($v);
}
当对一个对象进行“序列化”操作的时候,会自动调用类中的__sleep()方法;
当“反序列化”一个对象的时候,会自动调用对应类中的__wakeup()方法;
<?php
class C1{
public $v1 = 1;
public $v2 = 2;
function __sleep(){//只保存C1
echo "__sleep";
return array(‘v1‘);
}
function __wakeup(){//经常用于重新建立数据库连接,或执行其它初始化操作。
echo "__wakeup";
}
}
var_dump($s = serialize(new C1));
file_put_contents(‘./test_serialize‘, $s);
var_dump(unserialize(file_get_contents(‘./test_serialize‘)));
__tostring()
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-24.html
http://www.jiaoanw.com/
true
教案网
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-24.html
report
1904
用foreach语句进行遍历(只能遍历可访问的属性) ?phpclass C1{ public $v1 = 1; protected $v2 = 2; private $v3 = 3; public function fetchAllProp(){ foreach($this as $key = $value){ echo
旅沪比这条船舰龄大点