PHP-002-【面向对象】-对象的类型转换

学习要点

  1. 对象转对象
  2. 字符串转对象
  3. 数组转对象
  4. NULL 转对象
<?php
class human{
	var $height=0;
	function setHeight()
	{
		$this->height=173;
	}
}
$oldman=new human();
var_dump($oldman);// object(human)[1]  public 'height' => int 0
echo '<hr />';
//对象转对象
$newman=(object)$oldman;
var_dump($newman);// object(human)[1]  public 'height' => int 0
echo '<hr />';
//字符串转对象
$newstring=(object)"Hello World!";
var_dump($newstring); //object(stdClass)[2]  public 'scalar' => string 'Hello World!' (length=14)
echo '<hr />';

//数组转对象
$numArr=array(1,2,3);
$newNum=(object)$numArr;
var_dump($newNum); 
echo '<hr />';
//echo $newNum->0;//有点奇怪如何进行访问呢?

/*
 * 
 * object(stdClass)[3]
  public 0 => int 1
  public 1 => int 2
  public 2 => int 3

 */
echo "<br />";
//NULL 转对象
$null=(object)NULL;
var_dump($null);
?>

 学习要点

  1. objectToArray
  2. arrayToObject
  3. is_object:判断是否是对象
  4. get_object_vars:获得对象中的变量
  5. __construct:使用构造函数
  6. array_map:暂时未知
<?php
/**
 * 对象和数组的相互转化
 * @link http://www.phpddt.com PHP分享平台
 */
class Test{
    public $a;
    public $b;
    //定义构造函数
    public function __construct($a) {
        $this->a = $a;
    }
}
 
//对象转数组,使用get_object_vars返回对象属性组成的数组
function objectToArray($obj){
    //如果参数是对象就获取对象的变量
    $arr = is_object($obj) ? get_object_vars($obj) : $obj;
    if(is_array($arr)){
        return array_map(__FUNCTION__, $arr);
    }else{
        return $arr;
    }
}
 
//数组转对象
function arrayToObject($arr){
    if(is_array($arr)){
        return (object) array_map(__FUNCTION__, $arr);
    }else{
        return $arr;
    }
}
 
$test = new Test('test1');
$test->b = new Test('test2');
print_r($test);
echo '<hr />';
//将一个对象转换成一个数组
$array = objectToArray($test);
print_r($array);
echo '<hr />';

$object = arrayToObject($array);
print_r($object);
?>
发布了47 篇原创文章 · 获赞 3 · 访问量 1957

猜你喜欢

转载自blog.csdn.net/yueyekonglong/article/details/103991234