【发布时间】:2015-04-13 04:30:35
【问题描述】:
根据http://php.net/manual/en/functions.arguments.php:
默认情况下,函数参数是按值传递的(因此,如果函数内的参数值发生变化,函数外不会发生变化)。
但是,当我尝试以下脚本时,参数是通过引用传递的。
function test($change_date) {
$change_date->add(new DateInterval('P1D'));
}
$date_initial = new DateTime();
$date_initial->sub(new DateInterval('P30D'));
var_dump($date_initial);
test($date_initial);
var_dump($date_initial);
返回:
object(DateTime)#3 (3) {
["date"]=>string(19) "2015-03-14 11:19:23"
["timezone_type"]=>int()
["timezone"]=>string(12)
}
object(DateTime)#3 (3) {
["date"]=>string(19) "2015-03-15 11:19:23"
["timezone_type"]=>int()
["timezone"]=>string(12)
}
那么,如何将日期对象按值传递给函数,从而不改变原始对象呢?
【问题讨论】:
标签: php