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