php数组引用传递给函数

时间:2012-02-14 21:12:18

标签: php

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

我正在构建一个包含文件十六进制值的非常大的数组(如$array[0]=B5 $array[1]=82,依此类推,直到$array[1230009]

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

怎么可能?

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

1 个答案:

答案 0 :(得分:3)

以下文章中提供了一些可能有用的信息:Do not use PHP references

接近该帖子的末尾,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()期待一份副本。   如上所述,$data将不能对引用进行写时复制   复制用于调用strlen()strlen()将非常简单   operation - 实际上strlen()是最简单的函数之一   在PHP - 中,副本将立即销毁。

考虑到你提出的问题,你可能会遇到这样的情况......

相关问题