Maison développement back-end tutoriel php PHP变量内存分配问题记录整理_php技巧

PHP变量内存分配问题记录整理_php技巧

May 17, 2016 am 08:52 AM
php变量 内存分配

今天碰到一个关于php变量内存分配的问题,记录一下。

如下这段代码:

复制代码 代码如下:

$a = array (
'str' => 1,
'child' => 2
);

$b = $a;
$b['child'] = $a;
$b['child']['str'] = 2;
echo $b['str'];
$b = null;
echo $a['str'];

会输出什么呢,结果是11,$b=$a的时候其实并没有新分配内存,ab是指向的同一个区域,$b['child']=$a时,$b会先copy一份原来$a的内容,然后再修改,也就是说这时候$b和$a指向了不同的区域,再修改$a或者$b的时候都不会互相影响了。

再看这段代码:
复制代码 代码如下:

class A
{
public $str = '';
public $child;
}

$a = new A();
$b = $a;
$a->str = 1;
$a->child = 2;
$b->child = $a;
$b->child->str = 2;
echo $b->str;
$b = null;
echo $a->str;

又会输出什么呢,结果是22,根据实际情况来判断,$b->child=$a的时候,并没有像数组那样,重新copy一份,ab以及a->child都是指向的同一片区域,这样改任何一个,其余几个都会被改掉。

可是PHP为啥要设计成这样呢。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Avis PHP : Variable non définie : Solution Avis PHP : Variable non définie : Solution Jun 25, 2023 pm 04:18 PM

Avis PHP : Variable non définie : Solution

Quelles sont les meilleures pratiques en matière d'allocation de mémoire dans les fonctions Java ? Quelles sont les meilleures pratiques en matière d'allocation de mémoire dans les fonctions Java ? May 02, 2024 pm 10:33 PM

Quelles sont les meilleures pratiques en matière d'allocation de mémoire dans les fonctions Java ?

Analyse de l'allocation de mémoire de la fonction Golang Analyse de l'allocation de mémoire de la fonction Golang Apr 29, 2024 pm 02:24 PM

Analyse de l'allocation de mémoire de la fonction Golang

Une discussion approfondie sur les stratégies d'allocation de mémoire et d'expansion des tranches Golang Une discussion approfondie sur les stratégies d'allocation de mémoire et d'expansion des tranches Golang Jan 24, 2024 am 10:46 AM

Une discussion approfondie sur les stratégies d'allocation de mémoire et d'expansion des tranches Golang

Pièges et bonnes pratiques en matière d'allocation de mémoire et de destruction de fonctions C++ Pièges et bonnes pratiques en matière d'allocation de mémoire et de destruction de fonctions C++ Apr 23, 2024 am 09:36 AM

Pièges et bonnes pratiques en matière d'allocation de mémoire et de destruction de fonctions C++

Implémenter une allocation de mémoire et un garbage collection efficaces en langage Go Implémenter une allocation de mémoire et un garbage collection efficaces en langage Go Sep 28, 2023 am 11:10 AM

Implémenter une allocation de mémoire et un garbage collection efficaces en langage Go

Erreurs courantes dans l'allocation de mémoire des fonctions C++ et leurs solutions Erreurs courantes dans l'allocation de mémoire des fonctions C++ et leurs solutions Apr 22, 2024 pm 05:09 PM

Erreurs courantes dans l'allocation de mémoire des fonctions C++ et leurs solutions

Analyser les différences entre le tas et la pile en Java et leurs scénarios d'application Analyser les différences entre le tas et la pile en Java et leurs scénarios d'application Feb 24, 2024 pm 11:12 PM

Analyser les différences entre le tas et la pile en Java et leurs scénarios d'application

See all articles