php5.0相等,关于php:3个相等
=,==和===有什么區別?
我認為使用一個等號表示變量,而使用兩個等號表示比較條件,最后使用三個等號表示比較變量的值。
看看這個例子...我已經發布了,它將澄清更多的事情..
對于高級PHP用戶,了解==和===之間的區別并問自己"當我確定兩個操作數是同一類型時,與==或===進行比較會更快嗎?",請查看我的 下面的基準腳本。
@Strawberry我覺得問題標簽也應該包含javascript標簽,因為它也適用于該語言。
(更新):我已經在編輯中添加了javascript標記,因為人們在javascript中使用=的地方存在很多問題。 那不僅適用于PHP,還適用于其他語言。
我繼續刪除了JavaScript標記:這里的所有答案僅與PHP有關(最新版本除外,該版本非常薄弱),語言處理方式之間存在差異,并且已經存在一個類似的事實上的規范JavaScript問題(等于 運算符(== vs ===)是否應該在JavaScript比較中使用?)。
您具有=賦值運算符,==是"等于"比較運算符,而===是"相同"比較運算符。
$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)
有關==和===的需求以及使用每種情況的更多信息,請參閱文檔。
當我比較兩個相同的日期時間時,我得到了錯誤的結果,為什么?示例:sandbox.onlinephpfunctions.com/code/
@stloc,帶有對象的===告訴您它們是否是同一對象,而不是它們是否具有相同的內容。
在PHP4中引入,在Y2018中很有趣;-)
=是賦值運算符
==
是比較運算符(檢查是否
兩個變量具有相等的值)
===是相同的比較
運算符(檢查是否有兩個變量
具有相等的值,并且具有相同的值
類型)。
=賦值運算符
==檢查兩個變量是否具有相同的值
===檢查兩個變量是否具有相同的值,以及它們的類型是否相同
也了解!=和!==而不是兩個比較運算符的版本。有些語言使用:=作為賦值,只是為了避免這種混淆。
=運算符將值分配給變量
$ six = 6;值6分配給變量$ six
==運算符,檢查兩個變量的值是否相等,并且主要用于if語句之類的條件
$a = 2;
$b = 2;
if ($a == $b) {
echo both variables have the same value;
}
===類似于==的運算符(檢查值是否相等),還檢查兩個數據類型是否相同
$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類型,而$ b是string類型。所以這里的輸出
對于高級PHP用戶,了解==和===之間的區別并問自己:"當我確定兩個操作數是同一類型時,與==或與===進行比較會更快嗎?"
簡短而通用的答案是:在這種情況下,使用===不會提高性能,因此您可能應該使用==。
對于有興趣對其進行基準測試的人,您可以使用我專門編寫的以下代碼,并嘗試$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";
?>
注意:僅當每個"第一嘗試"非常接近其"第二嘗試"時,該比較才有效。如果它們明顯不同,則意味著處理器在執行比較時正忙于做其他事情,因此結果不可靠,應該重新運行基準測試。
這樣的微基準并不是很可靠。您極不可能擔心==或===作為性能問題的原因。 IMO:最好嚴格(===),除非您明確希望比較不嚴格(==)。奇怪的邊緣情況(例如"5 is not a number" == 5)的數量可能會導致古怪的錯誤。 ===絕不會遇到此問題。
我的測試是告訴程序員,如果出于性能原因選擇===,那他們錯了。因此,程序員可以基于邏輯原因而不是基于性能原因自由選擇===或==:在不同的情況下,一個或另一個更喜歡,并且根本不考慮性能。
總結
以上是生活随笔為你收集整理的php5.0相等,关于php:3个相等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试技术qtp,51Testing独
- 下一篇: 动态规划算法php,php算法学习之动态