Rumah > pembangunan bahagian belakang > masalah PHP > Apakah perbezaan antara pembolehubah statik dan pembolehubah biasa dalam php

Apakah perbezaan antara pembolehubah statik dan pembolehubah biasa dalam php

青灯夜游
Lepaskan: 2023-03-15 07:08:01
asal
4390 orang telah melayarinya

Perbezaan: 1. Pembolehubah statik hanya dimulakan sekali, manakala pembolehubah biasa boleh dimulakan beberapa kali. 2. Skop pembolehubah global biasa ialah keseluruhan program sumber Apabila program sumber terdiri daripada berbilang fail sumber, pembolehubah global biasa adalah sah dalam setiap fail sumber manakala pembolehubah global statik hanya sah dalam fail sumber di mana pembolehubah itu berada ditakrifkan.

Apakah perbezaan antara pembolehubah statik dan pembolehubah biasa dalam php

Persekitaran pengendalian tutorial ini: sistem windows7, versi PHP7.1, komputer DELL G3

Tambah statik di hadapan pembolehubah ke membentuk Pembolehubah statik (pembolehubah statik).

Perbezaan antara pembolehubah statik dan pembolehubah biasa ialah skop pembolehubah global bukan statik ialah keseluruhan program sumber Apabila program sumber terdiri daripada berbilang fail sumber, pembolehubah global bukan statik berada dalam setiap fail sumber Berkesan. Pembolehubah global statik mengehadkan skopnya, iaitu, ia hanya sah dalam fail sumber di mana pembolehubah ditakrifkan dan tidak boleh digunakan dalam fail sumber lain bagi program sumber yang sama. Memandangkan skop pembolehubah global statik terhad kepada satu fail sumber dan hanya boleh dikongsi oleh fungsi dalam fail sumber itu, ralat boleh dielakkan dalam fail sumber lain.

Perbezaan antara pembolehubah statik dan pembolehubah biasa:

Perbezaan antara pembolehubah global statik dan pembolehubah global biasa: pembolehubah global statik hanya dimulakan sekali untuk mengelakkannya daripada menjadi dirujuk dalam unit fail lain ;
Perbezaan antara pembolehubah tempatan statik dan pembolehubah tempatan biasa: pembolehubah tempatan statik hanya dimulakan sekali, dan kali seterusnya adalah berdasarkan nilai hasil sebelumnya;
Perbezaan antara fungsi statik dan biasa fungsi: fungsi statik hanya mempunyai satu salinan dalam ingatan, fungsi biasa Kekalkan salinan pada setiap panggilan.

Tambahkan kata kunci statik sebelum pembolehubah global dan pembolehubah global ditakrifkan sebagai pembolehubah statik global.

1) Lokasi dalam ingatan: kawasan storan statik (kawasan storan statik wujud semasa keseluruhan program dijalankan)

2) Permulaan: Pembolehubah statik global yang tidak diinisialisasi akan dimulakan secara automatik oleh atur cara ialah 0 ( nilai objek automatik adalah sewenang-wenangnya melainkan ia dimulakan secara eksplisit)

3) Skop: Pembolehubah statik global tidak kelihatan di luar fail di mana ia diisytiharkan. Tepat dari sudut definisi hingga ke penghujung fail.

Kelebihan pembolehubah statik:

tidak akan diakses oleh fail lain Anda boleh mengubah suai pembolehubah dengan nama yang sama dalam fail lain tanpa konflik.

Lokasi dalam ingatan: Kawasan storan statik

Permulaan: Pembolehubah statik global yang tidak diinisialisasi akan dimulakan secara automatik kepada 0 oleh atur cara (nilai objek automatik adalah sewenang-wenangnya , melainkan dia dimulakan secara eksplisit)
Skop: Skop masih skop setempat Apabila blok fungsi atau pernyataan yang mentakrifkannya tamat, skop akan tamat.

Nota: Apabila statik digunakan untuk mengubah suai pembolehubah tempatan, ia menukar lokasi storan pembolehubah tempatan daripada tindanan asal kepada kawasan storan statik. Walau bagaimanapun, pembolehubah statik tempatan tidak dimusnahkan selepas meninggalkan skop, tetapi masih berada dalam ingatan sehingga akhir program, tetapi kami tidak lagi boleh mengaksesnya.
Apabila statik digunakan untuk mengubah suai pembolehubah global, ia mengubah skop pembolehubah global (ia tidak kelihatan di luar fail yang diisytiharkan), tetapi tidak menukar lokasi storannya, ia masih dalam statik kawasan simpanan.

Contoh fungsi biasa:

<?php
function Test() {
  $w3sky = 0;
  echo $w3sky;
  $w3sky++;
  /*函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。*/
}
?>
Salin selepas log masuk

Untuk mentakrifkan pembolehubah $w3sky sebagai statik, kodnya adalah seperti berikut:

<?php
function Test() {
  static $w3sky = 0;
  echo $w3sky;
  $w3sky++;
} //本函数每调用Test()都会输出 $w3sky 的值并加一。
 
?>
Salin selepas log masuk

Statik pembolehubah juga menyediakan cara untuk mengendalikan fungsi rekursif. Fungsi rekursif ialah kaedah yang memanggil dirinya sendiri. Berhati-hati semasa menulis fungsi rekursif, kerana fungsi tersebut mungkin berulang tanpa batas. Pastikan anda mempunyai cara untuk membatalkan pengulangan. Fungsi mudah berikut dikira secara rekursif hingga 10, menggunakan pembolehubah statik $count untuk menentukan masa untuk berhenti dan fungsi rekursif:

<?php
function Test() {
  static $count = 0;
  $count++;
  echo $count;
  if ($count < 10) {
    Test();
  }
  $count--;
}
?>
Salin selepas log masuk

Nota: Pembolehubah statik tidak boleh diisytiharkan sebagai ungkapan : statik $int = 1 2; Cara ini adalah salah dan statik $int = 1;

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah perbezaan antara pembolehubah statik dan pembolehubah biasa dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan