繁体   English   中英

PHP将数组传递给类

[英]PHP passing array to class

我有大约300个索引的数组,每个索引都有大约8个“子索引”(?)。 因此,这是一个很大的数组。 我正在将代码转换为oop样式,我的一个类(颜色)将需要将此数组作为参数传递。 所以我的问题很简单....如果我创建100个颜色类并传递每个数组,我不是在创建100个单独的数组,而只是校正100个指针?

$colors['Apricot'] = array(250,180,160,3341,328,826,194,3332,0);
$colors['Apricot, Light'] = array(255,230,225,3824,8,833,2605,-1,1);

$x=new color();
$y=new color();
$z=new color();

$x->doSomething($colors);
$y->doSomething($colors);
$z->doSomething($colors);

您仍然只是数组的一个副本,而不是三个?

谢谢托德

真正。 但是从理论上讲,数组是作为值复制的 只是在PHP内部,它不会在内存中重复 ...除非您的对象之一开始修改该传递的数组。

在这种情况下,您可以传递一个显式&引用,甚至可以先将其转换为ArrayObject。 (再次:如果您不打算编辑数组,则几乎是不必要的。)

是的,您正在创建100个副本,因为默认情况下,标量和数组参数是按值而不是按引用传递给PHP中的类方法的。

为了使方法通过引用接受参数,您必须通过在参数名称前加上“&”号来更改方法签名,如下所示:

public function doSomething( &$argument )
{
}

编辑:
要更准确地说明内部工作原理,请参阅mario的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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