|
ve ||
- PHP bu iki operatörler arasındaki fark nedir?
|
ikili operatör, bu binary veya olacak LeftHand'e ve righthand değerlerin hem de bit.
||
bir boolean operatörü bu 'gerçek' karşılaştığında, short circuit (sıfır olmayan herhangi bir değer, bu boş olmayan diziler içerir) olacaktır.
print_r(1 | 2) // 3
print_r(1 || 2) // 1
Fonksiyonları ile kullanıldığında:
function numberOf($val) {
echo "$val, ";
return $val;
}
echo numberOf(1) | numberOf(2); // Will print 1, 2, 3
echo numberOf(1) || numberOf(2); // Will print 1, 1
Sadece ve benzeri ve && operatör, çift Operatör bir "kısa devre" operatörüdür.
Örneğin:
if(condition1 || condition2 || condition3) If condition1 is true, condition 2 and 3 will NOT be checked.
if(condition1 | condition2 | condition3) This will check conditions 2 and 3, even if 1 is already true. As your conditions can be quite expensive functions, you can get a good
bunları kullanarak performans artışı.
There is one big caveat, NullReferences or similar problems. Örneğin:
if(class != null && class.someVar < 20) If class is null, the if-statement will stop after "class != null" is false. If you only use &, it will try to check class.someVar and you get a
güzel NullReferenceException. Eğer kötü bir şey tetikleyebilir olası olduğu gibi Or-Operatörü ile bu, bir tuzak o kadar olmayabilir
ancak akılda tutulması gereken bir şey var.
Hiç kimse tek ve kullanır veya | operatörleri olsa da, her koşul olmak HAS bir fonksiyonu olan bir tasarıma sahip olmadıkça
idam. Bir tasarım koku gibi geliyor, ama bazen (nadiren) o şeyler yapmak için temiz bir yoldur. & operatörü "Bu 3 fonksiyonları çalıştırmak yok,
ve bunlardan biri false döndürürse, else bloğu çalıştırmak "iken | yok" yok return false eğer sadece "else bloğu çalıştırmak - yararlı olabilir,
ama dediğim gibi, sık sık bir tasarım koku.