Rumah pembangunan bahagian belakang tutorial php PHP变量内存分配问题记录整理_php技巧

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

May 17, 2016 am 08:52 AM
pembolehubah php peruntukan ingatan

今天碰到一个关于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为啥要设计成这样呢。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notis PHP: Pembolehubah tidak ditentukan:Penyelesaian Notis PHP: Pembolehubah tidak ditentukan:Penyelesaian Jun 25, 2023 pm 04:18 PM

Dalam pembangunan PHP, kita sering menemui mesej ralat PHPNotice:Undefinedvariable. Mesej ralat ini bermakna kami telah menggunakan pembolehubah yang tidak ditentukan dalam kod. Walaupun mesej ralat ini tidak akan menyebabkan kod ranap, ia akan menjejaskan kebolehbacaan dan kebolehselenggaraan kod. Di bawah, artikel ini akan memperkenalkan anda kepada beberapa kaedah untuk menyelesaikan ralat ini. 1. Gunakan fungsi error_reporting(E_ALL) semasa proses pembangunan Dalam pembangunan PHP, kita boleh

Apakah amalan terbaik untuk peruntukan memori dalam fungsi Java? Apakah amalan terbaik untuk peruntukan memori dalam fungsi Java? May 02, 2024 pm 10:33 PM

Amalan terbaik untuk peruntukan memori dalam fungsi Java termasuk menggunakan pengurusan memori automatik dan memastikan algoritma GC yang sesuai digunakan. Pantau corak peruntukan memori dan kenal pasti kebocoran atau kesesakan memori. Gunakan pengumpulan objek untuk menggunakan semula objek yang sama saiz. Elakkan sejumlah besar peruntukan jangka pendek dan pertimbangkan untuk menggunakan alternatif. Gunakan corak Objek Null untuk mengelak daripada mencipta objek yang tidak diperlukan. Keluarkan sumber asli secara eksplisit, memastikan memori yang tidak boleh diakses oleh JavaGC dikeluarkan.

Analisis peruntukan memori fungsi golang Analisis peruntukan memori fungsi golang Apr 29, 2024 pm 02:24 PM

Soalan: Bagaimana untuk menganalisis peruntukan memori fungsi Go? Jawapan: Gunakan fungsi heapprofile dalam pakej pprof untuk menjana longgokan timbunan. Analisis longgokan timbunan untuk menentukan jenis dan saiz peruntukan. Penerangan terperinci: Hasilkan longgokan timbunan: dayakan pemprofil timbunan dan panggil fungsi heapprofile. Analisis longgokan longgokan: Gunakan perintah gotoolpprof untuk menganalisis fail longgokan longgokan untuk melihat maklumat peruntukan.

Perbincangan mendalam mengenai peruntukan memori dan strategi pengembangan kepingan Golang Perbincangan mendalam mengenai peruntukan memori dan strategi pengembangan kepingan Golang Jan 24, 2024 am 10:46 AM

Analisis mendalam tentang prinsip penghirisan Golang: peruntukan memori dan strategi pengembangan Pengenalan: Penghirisan ialah salah satu jenis data yang biasa digunakan di Golang Ia menyediakan cara yang mudah untuk mengendalikan jujukan data berterusan. Apabila menggunakan kepingan, adalah penting untuk memahami peruntukan memori dalaman dan strategi pengembangan untuk meningkatkan prestasi program. Dalam artikel ini, kami akan menyediakan analisis mendalam tentang prinsip penghirisan Golang, disertai dengan contoh kod tertentu. 1. Struktur ingatan dan prinsip asas penghirisan Di Golang, penghirisan ialah jenis rujukan kepada tatasusunan asas.

Perangkap dan amalan terbaik dalam peruntukan memori dan pemusnahan fungsi C++ Perangkap dan amalan terbaik dalam peruntukan memori dan pemusnahan fungsi C++ Apr 23, 2024 am 09:36 AM

Dalam C++, terdapat perangkap yang perlu diperhatikan apabila fungsi memperuntukkan dan memusnahkan memori, termasuk kebocoran memori (menahan penunjuk pada memori yang tidak lagi diperlukan) dan penunjuk berjuntai (menunjuk ke memori yang dibebaskan). Untuk mengelakkan masalah ini, amalan terbaik termasuk: menggunakan penunjuk pintar (seperti std::shared_ptr) untuk mengurus memori secara automatik menggunakan teknik RAII untuk memastikan sumber dikeluarkan apabila objek di luar skop mengelak daripada mengembalikan penunjuk kepada pembolehubah setempat; untuk melepaskan peruntukan memori. Dengan mengikuti amalan ini, anda boleh memastikan kebolehpercayaan kod anda dan mengelakkan kebocoran memori dan penunjuk berjuntai.

Ralat biasa dalam peruntukan memori fungsi C++ dan penyelesaiannya Ralat biasa dalam peruntukan memori fungsi C++ dan penyelesaiannya Apr 22, 2024 pm 05:09 PM

Ralat biasa dalam peruntukan memori fungsi termasuk: 1) penunjuk mentah berjuntai 2) kebocoran memori 3) penunjuk liar; Penyelesaian: 1) Gunakan penunjuk pintar; 2) Gunakan RAII;

Analisis perbezaan antara timbunan dan timbunan dalam Java dan senario aplikasinya Analisis perbezaan antara timbunan dan timbunan dalam Java dan senario aplikasinya Feb 24, 2024 pm 11:12 PM

Perbezaan antara timbunan Java dan timbunan dan analisis senario aplikasi memerlukan contoh kod khusus Dalam program Java, timbunan dan timbunan ialah dua struktur data yang biasa digunakan, dan ia mengambil alih peranan dan fungsi yang berbeza dalam ingatan. Memahami perbezaan antara timbunan dan timbunan adalah penting untuk menulis program Java yang cekap. Mula-mula, mari kita lihat timbunan Java. Heap ialah kawasan yang digunakan untuk menyimpan objek Semua objek yang dicipta dalam program disimpan dalam timbunan. Timbunan adalah tempat memori diperuntukkan dan dikeluarkan secara dinamik semasa program berjalan Ia tidak tertakluk kepada sebarang sekatan dan boleh secara automatik

Laksanakan peruntukan memori dan pengumpulan sampah yang cekap dalam bahasa Go Laksanakan peruntukan memori dan pengumpulan sampah yang cekap dalam bahasa Go Sep 28, 2023 am 11:10 AM

Mencapai Peruntukan Memori yang Cekap dan Pengumpulan Sampah dalam Bahasa Go Dalam bahasa pengaturcaraan moden, adalah sangat penting untuk mengurus memori dengan berkesan. Sebagai bahasa yang dilahirkan untuk kecekapan, bahasa Go menyediakan pengurusan memori dan mekanisme pengumpulan sampah yang ringkas dan mudah digunakan untuk membantu pembangun mencapai peruntukan dan pelepasan memori yang cekap tanpa perlu mengendalikan memori secara manual. Peruntukan memori dalam bahasa Go adalah tanggungjawab sistem masa jalan. Ia menyediakan kawasan memori yang dipanggil Heap untuk menyimpan objek yang diperuntukkan secara dinamik, tatasusunan, kepingan, dll. Apabila kita menggunakan n

See all articles