久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

PHP對象比較

2023-12-07 129

一、簡介

在PHP中,對象比較是一個比較復(fù)雜的過程。首先,當(dāng)使用比較運算符(==)來比較兩個對象變量時,比較的原則是:如果兩個對象的屬性和屬性值都相等,而且這兩個對象都是同一個類的實例,那么這兩個對象變量就被認為是相等的。

如果使用全等運算符(===),則這兩個對象變量不僅要有相同的屬性和屬性值,還要指向某個類的同一個實例,即它們必須是同一個對象。

當(dāng)進行對象比較時,PHP不會自動進行類型轉(zhuǎn)換。例如,如果比較的兩個操作對象都是數(shù)字字符串,或者一個是數(shù)字另一個是數(shù)字字符串,PHP會按照數(shù)值進行比較。但如果比較使用的是 === 或 !== 運算符,則不會進行類型轉(zhuǎn)換——因為此時不僅要對比數(shù)值,還要對比類型。

二、實例

通過下面的示例可以理解以上原則。對象比較的例子:

<?php
function?bool2str($bool)
{
????if?($bool?===?false)?{
????????return?'FALSE';
????}?else?{
????????return?'TRUE';
????}
}

function?compareObjects(&$o1,?&$o2)
{
????echo?'o1?==?o2?:?'?.?bool2str($o1?==?$o2)?.?"\n";
????echo?'o1?!=?o2?:?'?.?bool2str($o1?!=?$o2)?.?"\n";
????echo?'o1?===?o2?:?'?.?bool2str($o1?===?$o2)?.?"\n";
????echo?'o1?!==?o2?:?'?.?bool2str($o1?!==?$o2)?.?"\n";
}

class?Flag
{
????public?$flag;

????function?__construct($flag?=?true)?{
????????$this->flag?=?$flag;
????}
}

class?OtherFlag
{
????public?$flag;

????function?__construct($flag?=?true)?{
????????$this->flag?=?$flag;
????}
}

$o?=?new?Flag();
$p?=?new?Flag();
$q?=?$o;
$r?=?new?OtherFlag();

echo?"Two?instances?of?the?same?class\n";
compareObjects($o,?$p);

echo?"\nTwo?references?to?the?same?instance\n";
compareObjects($o,?$q);

echo?"\nInstances?of?two?different?classes\n";
compareObjects($o,?$r);
?>

以上示例會輸出:

Two?instances?of?the?same?class
o1?==?o2?:?TRUE
o1?!=?o2?:?FALSE
o1?===?o2?:?FALSE
o1?!==?o2?:?TRUE

Two?references?to?the?same?instance
o1?==?o2?:?TRUE
o1?!=?o2?:?FALSE
o1?===?o2?:?TRUE
o1?!==?o2?:?FALSE

Instances?of?two?different?classes
o1?==?o2?:?FALSE
o1?!=?o2?:?TRUE
o1?===?o2?:?FALSE
o1?!==?o2?:?TRUE

以上代碼定義了兩個類:Flag 和 OtherFlag,以及一個用于比較對象是否相等的函數(shù) compareObjects。

  • Flag 類有一個屬性 $flag,默認值為 true。
  • OtherFlag 類也有一個屬性 $flag,默認值為 true。
  • compareObjects 函數(shù)接受兩個引用參數(shù) $o1 和 $o2,分別表示兩個對象。函數(shù)內(nèi)部使用 bool2str 函數(shù)將比較結(jié)果轉(zhuǎn)換為字符串并輸出。bool2str 函數(shù)接受一個布爾值參數(shù) $bool,如果 $bool 為
  • false,則返回 ‘FALSE’,否則返回 ‘TRUE’。在主程序中,創(chuàng)建了四個對象:o、o、p、$q 和 r。其中,r。其中,o 和 p 是 Flag 類的實例,p是Flag類的實例,q 是 o 的引用,o的引用,r 是 OtherFlag 類的實例。
  • 調(diào)用 compareObjects 函數(shù)分別比較這四個對象。首先比較 $o 和 $p,然后比較 $o 和 $q,最后比較 $o 和 $r。在每次比較后,都會輸出比較結(jié)果。

注意:PHP 擴展中可以自行定義對象比較(==)的原則。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。