目前,我的脚本创建了引用键:
<?php
$arr = array(
'authority' => $this->object->authority,
'fragment' => $this->object->fragment,
'host' => $this->object->host,
'pass' => $this->object->pass,
'path' => $this->object->path,
'port' => $this->object->port,
'query' => $this->object->query,
'scheme' => $this->object->scheme,
'scheme_name' => $this->object->scheme_name,
'scheme_symbols' => $this->object->scheme_symbols,
'user' => $this->object->user,
);
$arr['domain'] = &$arr['host'];
$arr['fqdn'] = &$arr['host'];
$arr['password'] = &$arr['pass'];
$arr['protocol'] = &$arr['scheme'];
$arr['username'] = &$arr['user'];
ksort($arr);
return $arr;
我的问题是:有更好的方法来实现这一点,可能一次又一次吗?
我知道下面的代码不起作用,但也许有人知道更好的方法吗?
<?php
$arr = array(
'a' => '1',
'b' => &$arr['a']
);
答案 0 :(得分:2)
我需要重新创建数组而不引用原始对象
您应该使用PHP5中引入的object cloning。这将允许您使用当前值制作对象的副本,同时允许原始类维护对已经存在的其他变量的任何引用:
$arr = clone $this->object;
变量可以作为类属性访问,而不是像示例中的数组键一样。如果您遇到问题,可以使用get_class_vars()
之类的内容返回班级属性的数组。