溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在php中將多個變量指向同一個引用

發(fā)布時間:2021-05-26 09:39:31 來源:億速云 閱讀:140 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了怎么在php中將多個變量指向同一個引用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

引用是什么? 

引用就是多個變量指向同一個內(nèi)存區(qū)域地址。如我們經(jīng)常用的實(shí)例一個類,就是內(nèi)存中開辟了一個區(qū)域存儲實(shí)例的類,實(shí)例賦值給變量就是讓這個變量指向這個內(nèi)存區(qū)域。

多個變量指向同一個引用有什么好處?
節(jié)約了內(nèi)存空間,多個變量指向同一個內(nèi)存地址,在調(diào)用的時候多個變量都是指向的同一個內(nèi)存地址。

多個變量指向同一個引用的缺點(diǎn)
要注意使用安全,即是由于多個變量都是指向的同一個內(nèi)存地址,其中一個變量更改了某個屬性,其它的變量調(diào)用的時候都是用的已經(jīng)更改的實(shí)例。

在php 中我們?yōu)橐粋€變量賦值的時候會在內(nèi)存中開辟一個區(qū)域存儲該值。那么我們將這個變量賦值給另一個變量的時候會在內(nèi)存中重新開辟一個區(qū)域去存儲改值嗎? 我做了如下實(shí)驗(yàn)

<?php
$d = "aaa";
$c = $d;
echo $c . "<br />";
$d = "bbb";
echo $c . "<br />";
/**
 * 執(zhí)行結(jié)果是
 * aaa
 * aaa
 */
?>

看到這里 不知道你理解了沒有,創(chuàng)建的變量$d 并為之賦初始值aaa 再將$d 賦值給$c,之后輸出$c 然后更改$d的值,在輸出$c。這個實(shí)驗(yàn)告訴我們,$d再給$c賦值的時候是在內(nèi)存中重新開辟了一個區(qū)域的。

那么,我們怎么才能讓$d和$c 都指向一個引用呢? 查了下資料 如下方法 讓兩個變量指向同一個內(nèi)存地址

<?php
$a = "123";
$b = &$a;
echo $b."<br />";
$a = "456";
echo $b;
/**
 * 運(yùn)行結(jié)果如下
 * 123
 * 456
 */
?>

我更改了一下變量的名字。方便測試發(fā)現(xiàn)區(qū)別。在這里我們可以看到 $b=&$a 其中&符號的作用就是讓$b 指向的是$a的內(nèi)存區(qū)域,而不是重新開辟一個區(qū)域。所以當(dāng)更改$a的值的時候$b也會隨著變化。

前面我們實(shí)驗(yàn)的對象是基本字符串,現(xiàn)在我們來看下類是否遵從這個規(guī)則

<?php
class Demo
{
  public $demo = "aaaa";
}
$demo1 = new Demo();
$demo2 = $demo1;
echo $demo2->demo . "<br />";
$demo1->demo = "bbbb";
echo $demo2->demo . "<br />";
/**
 * 運(yùn)行結(jié)果
 * aaaa
 * bbbb
 */
?>

我這里并沒有&符號指定$demo2必須指向$demo1 的內(nèi)存區(qū)域,所以關(guān)于類,當(dāng)一個實(shí)例變量賦值給另一個變量的時候默認(rèn)就是兩個變量指向同一個引用;

php 的引用我覺得沒有 java的好用,也許是這門語言本身還在發(fā)展,很多處理還沒有那么方便完善。 java初去基本數(shù)據(jù)類型(int、long、byte、short、char、boolean、float、double等),兩個變量賦值都是指向同一個內(nèi)存地址,而且不用你特意去指定。

php是什么語言

php,一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運(yùn)用。

上述內(nèi)容就是怎么在php中將多個變量指向同一個引用,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI