繁体   English   中英

php数组引用传递给函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM