第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

我就想知道,在什么情況下,后面這段代碼是true?【if ($a === $b) echo '==='; 】

我就想知道,在什么情況下,后面這段代碼是true?【if ($a === $b) echo '==='; 】


想不到什么情況他們是全等的。

正在回答

8 回答

上面的如果沒看懂,我就簡單說下我的理解

$a = new Car();

$b = new Car();

這兩段值一樣但是內(nèi)存地址不一樣,所以判斷不是全等

$a = $b = new Car(); 這一句 看起來跟上一句沒差別,但是程序執(zhí)行的時候是$a是先創(chuàng)建一個指針 指向NULL,然后看$b 有沒有指向 如果有就直接指向$b 的地址。所以他們的值和內(nèi)存都是一樣的。

0 回復(fù) 有任何疑惑可以回復(fù)我~

$a = new Car();

$b = new Car();

$a = $b = new Car();

a.x = a = {n:2},我們可能會這么想:

1.先把?{n:2}?賦值給?a
2.然后再創(chuàng)建?a.x,將?{n:2}?再賦值給?a.x12

這樣似乎確實說不通 a.x 的值是 undefined,因為 a.x 確實是被賦值了的啊。
可事實上,a.x 的值就是 undefined。

再來看一下: a = a.x = {n:2},按照上面的思路來看的話,應(yīng)該是:

1.先把?{n:2}?賦值給?a.x,那么也就相當(dāng)于?b.x?=?{n:2}?
2.再把?a?重新指向?{n:2}。那么這時候?a.x?的值確實是?undefined,a?對象?{n:2}?中就沒有?x?屬性嘛。12

按照這種思路,上述兩種方式的結(jié)果應(yīng)該是不同的,但事實卻是a = a.x = {n:2}a.x = a = {n:2}的結(jié)果是一致的,所以我們想的那種賦值的思路是不對的。

事實上,解析器在接受到 a = a.x = {n:2} 這樣的語句后,會這樣做:

  1. 找到 a 和 a.x 的指針。如果已有指針,那么不改變它。如果沒有指針,即那個變量還沒被申明,那么就創(chuàng)建它,指向 null。

  2. a 是有指針的,指向 {n:1};a.x 是沒有指針的,所以創(chuàng)建它,指向 null。

  3. 然后把上面找到的指針,都指向最右側(cè)賦的那個值,即 {n:2}。

希望有所幫助

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

新手村上路

。。。一臉懵圈,不明覺厲啊
2019-01-07 回復(fù) 有任何疑惑可以回復(fù)我~

$a = new Car();

$b = clone($a);? ?//克隆

$c = &$a;? //引用

使用clone的時候是克隆一個新實例,實例號不一樣(用var_dump可以查看),此時$a==$b;

引用時,$a === $c。

0 回復(fù) 有任何疑惑可以回復(fù)我~

補充:定義一個變量,系統(tǒng)會給變量$variable分配一個內(nèi)存空間,假設(shè)$a = &$variable; $b = &$variable; 我們就說$a,$b是$variable的兩個引用。而引用不再分配內(nèi)存空間。

---------------完畢-----------------

當(dāng)我們用

if?($a?===?$b)?echo?'===';

這條語句的時候就會輸出true

0 回復(fù) 有任何疑惑可以回復(fù)我~

if ($a->name === $b->name) echo '==='; //true

上面返回就是真,這個教程做的確實不好,很多地方說的很模糊。

1 回復(fù) 有任何疑惑可以回復(fù)我~

舉個例子吧


人是一個類,這能理解吧。

但是同卵雙胞胎能說他們的基因(類中的屬性和方法)相同,但是并不能說他們完全相同對吧,起碼根據(jù)出生時間一個大一個小。

換成代碼

$a=new Car(),$b=new Car,分別用var_dump輸出,可以直觀的看出區(qū)別,這里就不發(fā)截圖了,而且動一下收印象更深嘛。


而我是一個精神分裂患者,我自己有n個我,這n個我不光基因相同,除了代號(實例名),什么都相同,因為我是同一個人。別鉆牛角尖說什么眼神不同啊。

換成代碼

本體$a=new Car(),另一重人格$b,但還是我,所以$b=$a,再有一重人格也同理,$c=$a,這時候這個if就成立了


這個在項目中怎么應(yīng)用呢?我也沒用過........就只是在前邊那個通過私有初始化函數(shù)來控制實例的創(chuàng)建的那一課用來檢查第二次創(chuàng)建的實例和第一次的是不是同一個實例(結(jié)果是true).....

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕數(shù)據(jù)4083019

還是我....這里糾正一下,最后那個‘私有初始化函數(shù)’不準(zhǔn)確,應(yīng)該說‘私有初始化方法’..........
2017-11-13 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕尼黑123390 回復(fù) 慕數(shù)據(jù)4083019

那方法和函數(shù)到底是什么區(qū)別呢?
2018-10-22 回復(fù) 有任何疑惑可以回復(fù)我~

全等不只是數(shù)值相等,數(shù)據(jù)類型也相等。比如數(shù)值123和字符串“123”

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉1720382552

對于普通類型來說,值相等和類型相等,===就會判斷為true。比如 $a=123;$b=123 $a===$b會是真。 這種情況放到本次作業(yè)上就不適用了,但教程中提到‘當(dāng)需要判斷兩個變量是否為同一個對象的引用時,可以使用全等運算符===進(jìn)行判斷。’,我聯(lián)想到了前面學(xué)到的兩種賦值運算符,其中提到“=&:引用賦值,意味著兩個變量都指向同一個數(shù)據(jù)。它將使兩個變量共享一塊內(nèi)存,如果這個內(nèi)存存儲的數(shù)據(jù)變了,那么兩個變量的值都會發(fā)生變化。”,所以,對于不同對象來說,要想實現(xiàn)$a === $b判斷為true,需要引用賦值$b=&$a,用clone方法是不行的。
2017-08-26 回復(fù) 有任何疑惑可以回復(fù)我~

$b=$a;

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

我就想知道,在什么情況下,后面這段代碼是true?【if ($a === $b) echo '==='; 】

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號