开发者社区> 问答> 正文

是否存在将PHP数组复制到另一个数组的功能?

是否存在将PHP数组复制到另一个数组的功能?

我已经被烧了好几次了,试图复制PHP数组。我想将对象内部定义的数组复制到对象外部的全局数组。

展开
收起
保持可爱mmm 2020-01-13 18:50:54 513 0
1 条回答
写回答
取消 提交回答
  • 在PHP中,数组是通过副本分配的,而对象是通过引用分配的。这意味着:

    $a = array(); $b = $a; $b['foo'] = 42; var_dump($a);

    将产生:

    array(0) { }

    鉴于:

    $a = new StdClass(); $b = $a; $b->foo = 42; var_dump($a);

    产量:

    object(stdClass)#1 (1) { ["foo"]=> int(42) }

    您可能会对诸如的复杂性感到困惑ArrayObject,该对象的行为完全类似于数组。但是,作为对象,它具有引用语义。

    编辑:@AndrewLarsson在下面的评论中提出了一个观点。PHP具有一个称为“引用”的特殊功能。它们在某种程度上类似于C / C ++等语言中的指针,但并不完全相同。如果您的数组包含引用,则当数组本身通过副本传递时,引用仍将解析为原始目标。当然,通常这是期望的行为,但是我认为值得一提。

    问题来源于stack overflow

    2020-01-13 18:51:12
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载