php5.0相等,关于php:3个相等
=,==和===有什么區(qū)別?
我認(rèn)為使用一個(gè)等號(hào)表示變量,而使用兩個(gè)等號(hào)表示比較條件,最后使用三個(gè)等號(hào)表示比較變量的值。
看看這個(gè)例子...我已經(jīng)發(fā)布了,它將澄清更多的事情..
對(duì)于高級(jí)PHP用戶(hù),了解==和===之間的區(qū)別并問(wèn)自己"當(dāng)我確定兩個(gè)操作數(shù)是同一類(lèi)型時(shí),與==或===進(jìn)行比較會(huì)更快嗎?",請(qǐng)查看我的 下面的基準(zhǔn)腳本。
@Strawberry我覺(jué)得問(wèn)題標(biāo)簽也應(yīng)該包含javascript標(biāo)簽,因?yàn)樗策m用于該語(yǔ)言。
(更新):我已經(jīng)在編輯中添加了javascript標(biāo)記,因?yàn)槿藗冊(cè)趈avascript中使用=的地方存在很多問(wèn)題。 那不僅適用于PHP,還適用于其他語(yǔ)言。
我繼續(xù)刪除了JavaScript標(biāo)記:這里的所有答案僅與PHP有關(guān)(最新版本除外,該版本非常薄弱),語(yǔ)言處理方式之間存在差異,并且已經(jīng)存在一個(gè)類(lèi)似的事實(shí)上的規(guī)范JavaScript問(wèn)題(等于 運(yùn)算符(== vs ===)是否應(yīng)該在JavaScript比較中使用?)。
您具有=賦值運(yùn)算符,==是"等于"比較運(yùn)算符,而===是"相同"比較運(yùn)算符。
$a = $b ? ? Assign ? ? ?Sets $a to be equal to $b.
$a == $b ? ?Equal ? ? ? TRUE if $a is equal to $b.
$a === $b ? Identical ? TRUE if $a is equal to $b, and they are of the same type. (introduced in PHP 4)
有關(guān)==和===的需求以及使用每種情況的更多信息,請(qǐng)參閱文檔。
當(dāng)我比較兩個(gè)相同的日期時(shí)間時(shí),我得到了錯(cuò)誤的結(jié)果,為什么?示例:sandbox.onlinephpfunctions.com/code/
@stloc,帶有對(duì)象的===告訴您它們是否是同一對(duì)象,而不是它們是否具有相同的內(nèi)容。
在PHP4中引入,在Y2018中很有趣;-)
=是賦值運(yùn)算符
==
是比較運(yùn)算符(檢查是否
兩個(gè)變量具有相等的值)
===是相同的比較
運(yùn)算符(檢查是否有兩個(gè)變量
具有相等的值,并且具有相同的值
類(lèi)型)。
=賦值運(yùn)算符
==檢查兩個(gè)變量是否具有相同的值
===檢查兩個(gè)變量是否具有相同的值,以及它們的類(lèi)型是否相同
也了解!=和!==而不是兩個(gè)比較運(yùn)算符的版本。有些語(yǔ)言使用:=作為賦值,只是為了避免這種混淆。
=運(yùn)算符將值分配給變量
$ six = 6;值6分配給變量$ six
==運(yùn)算符,檢查兩個(gè)變量的值是否相等,并且主要用于if語(yǔ)句之類(lèi)的條件
$a = 2;
$b = 2;
if ($a == $b) {
echo both variables have the same value;
}
===類(lèi)似于==的運(yùn)算符(檢查值是否相等),還檢查兩個(gè)數(shù)據(jù)類(lèi)型是否相同
$a = 2;
$b ="2";
if ($a === $b) {
echo"both variable have same value and of same data type";
} else {
echo 'both variable is either not equal or not of same data type';
}
//這里$ a是int類(lèi)型,而$ b是string類(lèi)型。所以這里的輸出
對(duì)于高級(jí)PHP用戶(hù),了解==和===之間的區(qū)別并問(wèn)自己:"當(dāng)我確定兩個(gè)操作數(shù)是同一類(lèi)型時(shí),與==或與===進(jìn)行比較會(huì)更快嗎?"
簡(jiǎn)短而通用的答案是:在這種情況下,使用===不會(huì)提高性能,因此您可能應(yīng)該使用==。
對(duì)于有興趣對(duì)其進(jìn)行基準(zhǔn)測(cè)試的人,您可以使用我專(zhuān)門(mén)編寫(xiě)的以下代碼,并嘗試$a和$b的不同值:
// CONFIGURATION
$cycles = 1000000;
$a = 'random string 1';
$b = 'random string 2';
// FUNCTIONS
function compare_two_equals($a, $b) {
if ($a == $b) {
return TRUE;
} else {
return FALSE;
}
}
function compare_three_equals($a, $b) {
if ($a === $b) {
return TRUE;
} else {
return FALSE;
}
}
// EXECUTION
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
// RESULTS PRINTING
print"
COMPARE == (FIRST TRY):" . number_format($time_two_a, 3) ." seconds";
print"
COMPARE == (SECOND TRY):" . number_format($time_two_b, 3) ." seconds";
print"
COMPARE === (FIRST TRY):" . number_format($time_three_a, 3) ." seconds";
print"
COMPARE === (SECOND TRY):" . number_format($time_three_b, 3) ." seconds";
?>
注意:僅當(dāng)每個(gè)"第一嘗試"非常接近其"第二嘗試"時(shí),該比較才有效。如果它們明顯不同,則意味著處理器在執(zhí)行比較時(shí)正忙于做其他事情,因此結(jié)果不可靠,應(yīng)該重新運(yùn)行基準(zhǔn)測(cè)試。
這樣的微基準(zhǔn)并不是很可靠。您極不可能擔(dān)心==或===作為性能問(wèn)題的原因。 IMO:最好嚴(yán)格(===),除非您明確希望比較不嚴(yán)格(==)。奇怪的邊緣情況(例如"5 is not a number" == 5)的數(shù)量可能會(huì)導(dǎo)致古怪的錯(cuò)誤。 ===絕不會(huì)遇到此問(wèn)題。
我的測(cè)試是告訴程序員,如果出于性能原因選擇===,那他們錯(cuò)了。因此,程序員可以基于邏輯原因而不是基于性能原因自由選擇===或==:在不同的情況下,一個(gè)或另一個(gè)更喜歡,并且根本不考慮性能。
總結(jié)
以上是生活随笔為你收集整理的php5.0相等,关于php:3个相等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 软件测试技术qtp,51Testing独
- 下一篇: matlab变量由非标量,matlab中