首頁  >  文章  >  後端開發  >  php7新增的兩個運算子:“?->”和“??”

php7新增的兩個運算子:“?->”和“??”

PHPz
PHPz原創
2023-03-21 15:49:521707瀏覽

在PHP7發布以後,大家發現一個重要的改變是它增強了強型別檢查。這個變化是非常有益的,因為它可以幫助我們避免許多錯誤,例如在變數沒有被定義之前引用它。

在先前的PHP版本中,如果我們沒有定義一個變量,直接使用它會導致Undefined variable的錯誤。但是,在PHP7中,我們可以使用一些新功能來避免這個問題的發生。

這些新功能包括兩個新的運算符,分別是:?->??。它們可以分別解決兩種不同類型的問題。

?->運算子

在先前的PHP版本中,我們可以透過使用isset函數來判斷一個變數是否已定義。但是,這只適用於單一變數的情況。如果我們需要檢查一個物件的屬性是否已定義,那麼就需要使用一些複雜的程式碼來完成這個任務。

在PHP7中,我們可以使用?->運算子來檢查一個物件的屬性是否已定義。這個運算元只在屬性的接收者是null、false或未定義的變數時傳回null,否則傳回屬性的值。透過這種方法,我們可以避免在屬性沒有被定義之前使用它,從而避免Undefined variable的錯誤。

<?php
$obj = null;
$value = $obj?->property;
?>

在上面的程式碼中,如果$obj是null,那麼$value將被設定為null,否則$value將被設定為$obj的property屬性的值。

??運算子

另外一個非常有用的新功能是??運算子。這個操作符可以用來檢查一個變數是否已定義,如果沒有定義就設定一個預設值。

在先前的PHP版本中,我們通常會使用三元運算元來完成這個任務:

<?php
$variable = isset($variable) ? $variable : &#39;default value&#39;;
?>

在PHP7中,我們可以使用??運算子來取代上面的程式碼。如果$variable已經定義,那麼$variable將被賦值給$result,否則$result將被賦值為預設值。

<?php
$variable = null;
$result = $variable ?? "default value";
?>

在上面的程式碼中,$result將被設定為"default value",因為$variable是null。

總結

這兩個新運算子可以非常有效地避免Undefined variable的錯誤,並且使我們的程式碼更加清晰和易於維護。在使用它們時,我們只需要注意它們的用法和限制。

以上是php7新增的兩個運算子:“?->”和“??”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn