对不起,我确定这个答案是在互联网上的某个地方(甚至可能是stackoverflow),但我花了最后一个小时搜索,似乎无法找到答案...PHP的extract()函数是否使用copy-on-write将变量添加到符号表中?
PHP的extract()函数添加变量符号表使用拷贝写?
我知道PHP函数调用默认情况下都有一个copy-on-write(除非您通过引用指定),只是对此进行了好奇,因为我正在集成模板系统,因此我将大量变量抓到$数据数组,有时候这个数组可能非常大,我想知道在包含模板文件之前是否提取它们是解决这个问题的最好方法。
谢谢!
编辑:
澄清:
$array = array('a' => array(1,2,3), 'b' => array(3,4,5), 'c' => array(6,7,8));
extract($array);
//is $a, $b, $c Copy-On-Write at this point? Would be a lot better performance as opposed to allocating 3 new array()'s
//I would like to avoid having this change the original $array values so using EXTR_REFS is not a good solution for me here if I can avoid it and still keep performance!
$a = array(3);
嘿感谢您的答案!但是,这并不是我所要求的。我想知道,如果默认情况下提取功能将通过引用与写入副本添加变量。因此,在第一个例子中,我想知道$ a是否是一个引用(假设它是一个对象/数组或其他东西),然后根据写入的副本将它分配给它之后变成一个值?我想知道这是出于性能原因...我想避免提取后改变原始值。 – newms87
仍然没有完全回答这个问题,但对于任何最终在这里更好地了解提取函数如何与引用/复制一起工作的人来说,它是非常有用的。 – newms87