Php 为什么数组包含'&;字符串';作为值类型?

Php 为什么数组包含'&;字符串';作为值类型?,php,arrays,string,Php,Arrays,String,我有一个字符串数组: 我想知道为什么它在它的值类型中包含“&”,在“&string”和“string”类型之间有什么区别吗?&string表示元素包含对包含字符串的变量的引用,而不仅仅是字符串。如果您这样做了,就会发生这种情况: $num = '14005028'; $array['curp'] = &$num; 引用是另一个变量的别名,因此分配给$num将更改$array['curp']中的内容,反之亦然 请参阅PHP文档。这意味着您的数组索引'curp'设计通过引用传递的值 例

我有一个字符串数组:


我想知道为什么它在它的值类型中包含“&”,在“&string”和“string”类型之间有什么区别吗?

&string
表示元素包含对包含字符串的变量的引用,而不仅仅是字符串。如果您这样做了,就会发生这种情况:

$num = '14005028';
$array['curp'] = &$num;
引用是另一个变量的别名,因此分配给
$num
将更改
$array['curp']
中的内容,反之亦然


请参阅PHP文档。

这意味着您的数组索引'curp'设计通过引用传递的值

例如:

$var1 = "string by reference";
$var2 = " string"
$array = ["var1" => &$var1, "var2" => $var2];
var_dump($array);

可能是一个引用。但从技术上讲,PHP中的引用实际上不是你在C中可以做的引用。@AndreFerraz我从来没有说过关于C的任何事情。我知道你没有说过。从本质上讲,分配一个变量,例如$a=$b,将在PHP中作为引用传递。这两个变量都引用相同的zval,并且被PHP平等对待。PHP在某种程度上非常奇怪。@AndreFerraz除非
$b
包含对象,否则该赋值将生成一个副本。PHP通过使用写时拷贝优化拷贝,但这是一个看不见的实现细节。