【发布时间】:2015-08-18 07:42:21
【问题描述】:
我有一些代码,比如吹,
class Tool{
function getData(){
$res = array('name'=>'jay','age'=>22,'job'=>'developer','ID'=>1233211234567);
$res = (object)$res;
var_dump(111,$res);
$resLog = $res;
$this->resFilter($resLog);
var_dump(222,$res);
//...log code
}
function resFilter($res){
unset($res->ID);
}
}
echo '<pre>';
$t = new Tool;
$t->getData();
die;
我怀疑为什么在函数getData 中调用函数resFilter 后var_dump(222,$res); 会是这样的:
int(111)
object(stdClass)#2 (4) {
["name"]=>
string(3) "jay"
["age"]=>
int(22)
["job"]=>
string(9) "developer"
["ID"]=>
int(1233211234567)
}
int(222)
object(stdClass)#2 (3) {
["name"]=>
string(3) "jay"
["age"]=>
int(22)
["job"]=>
string(9) "developer"
}
所以你可以在 var_dump 的第二部分看到没有 ID 字段?谁能帮助我,告诉我为什么?
更新:
感谢您的回答,我试试这个$resLog = clone($res); 会正常工作。
【问题讨论】:
-
您将
$res变量转换为对象 -
我知道你说的意思,但我不知道为什么?