首頁  >  文章  >  後端開發  >  php如何使用函數銷毀變數

php如何使用函數銷毀變數

醉折花枝作酒筹
醉折花枝作酒筹原創
2021-08-06 11:15:511701瀏覽

上一篇文章我們了解了反序列化物件或陣列的方法,有需要的請看《php如何反序列化陣列和物件》。這次我們向大家介紹使用函數銷毀變數的方法,有需要的可以參考參考。

在開始文章之前,我們先來看看什麼是變數的銷毀。

PHP的變數或物件的銷毀可以分成明確銷毀和隱式銷毀:

1、明確銷毀,當物件沒有被引用時就會被銷毀,所以我們可以unset或為其賦值NULL;

2、隱式銷毀,PHP是腳本語言,在程式碼執行完最後一行時,所有申請的記憶體都要釋放掉。

我們今天要介紹的就是明確銷毀中的unset。

我們先來看一個小栗子。

<?php
class Human { 
  public $name = &#39;张三&#39;; 
  public $gender = null; 
  public function __destruct() { 
      echo &#39;结束!<br />&#39;; 
  } 
} 
$a = new Human(); 
$b = $c = $d = $a;
unset($a);
$d=null;


echo &#39;<hr />&#39;;
var_dump($a);
echo &#39;<hr />&#39;;
var_dump($b);
echo &#39;<hr />&#39;;
var_dump($c);
echo &#39;<hr />&#39;;
var_dump($d);
?>

結果是

php如何使用函數銷毀變數

話不多說,讓我們來看這個函數吧。

unset()函數用來銷毀給定的變數。

所以unset()並沒有真正銷毀變數中記憶體值,僅僅是切斷了變數與記憶體之間的關係,並將變數名稱也給幹掉了,但記憶體只要還被引用著就不會被釋放;而在PHP中物件的傳值預設是引用傳值,這也解釋了Human類別中,$a被unset()了,但是$ b =$c = $d一樣有值。

再來看看這個函數的語法吧。

void unset (要销毁的变量)

如果unset()是函數中的全域變量,則只銷毀局部變量,並且呼叫環境中的變數將保持與呼叫unset()之前相同的值。

如果unset()是函數中透過引用傳遞的變量,則只銷毀局部變量,並且呼叫環境中的變數將保持與呼叫unset()之前相同的值。

如果unset()是函數中的靜態變量,則靜態變數將在函數中銷毀。但是,當再次呼叫此函數時,靜態變數將恢復到上次銷毀之前的值。

就說到這裡了,有其他想知道的,可以點選這個喔。 → →php影片教學

#

以上是php如何使用函數銷毀變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn