PHP属性复制

if(!function_exists("copy_properties"))
{
	function copy_properties($fromObj,$toObj)
	{
		foreach($fromObj as $key=>$value)
		{
			if(is_array($toObj))
			{
				$toObj[$key] = $value;	
			}
			else if(is_object($toObj))
			{
				if(property_exists($toObj,$key))
				{
					$toObj->$key = $value;
				}
			}
		}
		return $toObj;
	}
}

   

    demo如下:

 

<?php

if(!function_exists("copy_properties"))
{
	function copy_properties($fromObj,$toObj)
	{
		foreach($fromObj as $key=>$value)
		{
			if(is_array($toObj))
			{
				$toObj[$key] = $value;	
			}
			else if(is_object($toObj))
			{
				if(property_exists($toObj,$key))
				{
					$toObj->$key = $value;
				}
			}
		}
		return $toObj;
	}
}

function pre_dump($obj)
{
	echo "<pre>";
	var_dump($obj);	
	echo "</pre>";
}


class TestVo
{
	public $id;
	public $name;
	public $age;
}

function test()
{
	$test_array = array(
		"id" 	=> 1,
		"name"	=> "ongsh",
		"age"	=> 25
	);
	
	//数组到对象
	$vo = copy_properties($test_array,new TestVo());
	pre_dump($vo);
	
	//对象到对象
	$newVo = copy_properties($vo,new TestVo());
	pre_dump($newVo);
	
	//数组到对象
	$arr = copy_properties($newVo,array());
	pre_dump($arr);
	
	//数组到数组
	$newArr = copy_properties($arr,array());
	pre_dump($newArr);
	
}


//execute
test();


?>

 

   页面输出:

object(TestVo)#1 (3) {
  ["id"]=>
  int(1)
  ["name"]=>
  string(5) "ongsh"
  ["age"]=>
  int(25)
}
object(TestVo)#2 (3) {
  ["id"]=>
  int(1)
  ["name"]=>
  string(5) "ongsh"
  ["age"]=>
  int(25)
}
array(3) {
  ["id"]=>
  int(1)
  ["name"]=>
  string(5) "ongsh"
  ["age"]=>
  int(25)
}
array(3) {
  ["id"]=>
  int(1)
  ["name"]=>
  string(5) "ongsh"
  ["age"]=>
  int(25)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值