php数组引用传递给函数

puf*_*fos 6 php

我有一个问题,我无法找到答案.

我正在构建一个包含文件十六进制值的非常大的数组(比如$array[0]=B5 $array[1]=82等等$array[1230009])

当我创建一个函数来操纵该数组中的一些偏移并传递$arrayas(function parse(&$array) { ... })时,它比我传递数组normaly(function parse($array) { ... })需要更长的时间.

怎么可能?

PS:有没有更快的方法不使用阵列?只是使用$ string ="B5 82 00 1E ..etc",但我需要跟踪偏移量,因为我提前读取十六进制值,因为其中一些值包含长度"

Pas*_*TIN 3

以下文章中的一些信息可能会有所帮助:不要使用 PHP 引用

在该帖子的末尾,约翰内斯发布了以下部分代码(引用)

function foo(&$data) {
    for ($i = 0; $i < strlen($data); $i++) {
        do_something($data{$i});
    }
}

$string = "... looooong string with lots of data .....";
foo(string);
Run Code Online (Sandbox Code Playgroud)

随之而来的评论的一部分是(仍然引用)

但现在在这种情况下,开发人员试图通过传递引用来聪明地节省时间。
但好吧,strlen()期待一份副本。
写时复制不能在引用上完成,因此$data将被复制以供调用strlen()strlen()将执行一个绝对简单的操作- 事实上strlen()是 PHP 中最简单的函数之一 -并且副本将立即被销毁。

考虑到您提出的问题,您很可能处于这样的情况......