php – 写时复制会阻止数组上的数据重复吗?

我正在使用PHP编写Web API客户端,将CSV数据解析为关联数组,并且我希望在使用这些数组时保护我的用户免受数据复制.

我的用户永远不会写这些数组(理论上他们可以,但在实践中没有意义).

现在我的问题是……如果我的用户将这些数组作为方法的参数传递,那么PHP的写时复制机制是否会阻止数据复制,或者任何未明确接受对数组的引用的方法都会收到完整的副本阵列?

解决方法:

写入时复制,顾名思义表示在写入内容之前不会复制任何变量;只要在传递的变量中没有改变单个字节,PHP就会自动避免不必要的重复,并且由于这种机制而不需要使用显式引用.

This article详细解释了如何在PHP的源代码中实现,并且如文章所示,使用xdebug可以轻松检查变量是否与xdebug_debug_zval函数不重复.

另外this answer在SO上有更多关于Copy-on-Write.

上一篇:php / mysql防止多列上的重复条目


下一篇:java – common.annotations.Beta的TransformException重复条目