[英]php array reference passing to function
我有一个问题,我无法找到答案。
我正在构建一个包含文件十六进制值的非常大的数组(如$array[0]=B5
$array[1]=82
,依此类推,直到$array[1230009]
)
当我创建一个函数来操作该数组中的一些偏移并传递$array
作为引用( function parse(&$array) { ... }
)时,它比我正常传递数组需要更长的时间( function parse($array) { ... }
)..
怎么可能?
PS:有没有更快的方法不使用阵列? 只是使用$ string =“B5 82 00 1E ..etc”,但我需要跟踪偏移量,因为我提前读取十六进制值,因为其中一些值包含长度“
以下文章中有一些可能有用的信息: 不要使用PHP引用
接近该帖子的末尾,Johannes发布了以下代码部分(引用) :
function foo(&$data) {
for ($i = 0; $i < strlen($data); $i++) {
do_something($data{$i});
}
}
$string = "... looooong string with lots of data .....";
foo(string);
与之相关的评论的一部分是(仍然引用) :
但是现在在这种情况下,开发人员试图通过传递引用来实现智能并节省时间。
但是,strlen()
需要一份副本。
copy-on-write无法在引用上完成,所以$data
将被复制用于调用strlen()
,strlen()
将执行一个绝对简单的操作- 实际上strlen()
是PHP中最简单的函数之一 -并且副本将立即销毁。
考虑到你问的问题,你可能会遇到这样的情况......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.