我阅读了这个问题的答案,但它引发了更多问题:PHP variables reference and memory usage
简而言之,我有一个项目,我试图在继续处理或循环之前遍历多维数组以获取一个值。用代码解释会更容易:
// Demo variables
$this->content['alias1'] = ('object' => new someObject; 'info' => array('type' => 'abc'));
$this->content['alias2'] = ('object' => new someObject; 'info' => array('type' => 'def'));
$this->content['alias3'] = ('object' => new someObject; 'info' => array('type' => 'abc'));
......这非常简单,但它明白了这一点。我想遍历它并找到所有“abc”的“类型”——最简单的方法是什么?我有这样的事情
foreach($this->content as $alias => $data) {
if ($data['info'] != 'abc') {
break;
}
// Do actual "abc" things
}
但是我正试图尽可能地把所有这些代码写成对记忆的认真。我觉得好像有一种更有效的方法可以做到这一点。
我在想,当对象被加载(这本质上是一个配置文件)时,它会分配一个对另一个变量的引用,比如
$this->types->$type =& $this->content['alias1'];
对于每个。在上面提到的问题中,它说 PHP 使用带有引用的写时复制 - 如果引用只是被读取而不是被写入,这是否是一种能够访问对象的有效方法?我也在想也许我可以将数组键名存储在$this->types->$type
数组中。