我想知道如何在PHP中重命名对象属性,例如:
<?php
$obj = new stdclass();
$obj->a = 10; // will be renamed
$obj->b = $obj->a; // rename "a" to "b", somehow!
unset($obj->a); // remove the original one
它在PHP5.3中不起作用(不知道早期版本),因为$obj->a
的引用会被$obj->b
分配给$obj->a
,因此取消设置$obj->b
, {{1}}将为空。有什么想法吗?
答案 0 :(得分:6)
您的代码正常运行,执行后$obj->b
为10
:http://codepad.org/QnXvueic
当您取消设置$obj->a
时,只需删除该属性,就不要触及该值。如果该值由另一个变量使用,则它在订单变量中保持不变。
答案 1 :(得分:0)
<?php
$obj = new stdclass();
$obj->a = 10; // will be renamed
$obj->b = $obj->a; // rename "a" to "b", somehow!
unset($obj->a); // remove the original one
var_dump($obj->b); //10 Works fine
答案 2 :(得分:-1)
使用对象克隆,参考:PHP __clone() documentation