downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Aritmetik İşleçler> <İşleçler
Last updated: Fri, 06 Nov 2009

view this page in

İşleç Önceliği

İşleç önceliği iki ifadenin birbirine hangi sıkılıkta bağlı olduğunu belirtir. Örneğin, 1 + 5 * 3 ifadesinin sonucu 18 değil, 16'dır. Çünkü, çarpma ("*") işlecinin önceliği toplama ("+") işlecinden yüksektir. Önceliği arttırmak için gerekirse parantezler kullanılabilir. Örneğin, (1 + 5) * 3 ifadesinin sonucu 18 olacaktır. Eğer işleç önceliklerinde eşitlik sözkonusu olursa soldaki işleç sağdakinden öncelikli olur.

Aşağıdaki listede işleçler en yüksek öncelikliden başlayıp en düşük öncelikliye doğru sıralanmışlardır. Aynı satırda yer alan işleçler eşöncelikli olup hangi sırada ele alınacaklarına değerlendirme sırasında karar verilir.

İşleç Öncelikleri
İlişkilendirme İşleçler Ek bilgi
yönsüz clone new clone ve new
soldan [ array()
yönsüz ++ -- arttırım/eksiltim
yönsüz ~ - (int) (float) (string) (array) (object) (bool) @ Türler
yönsüz instanceof Türler
sağdan ! mantıksal
soldan * / % aritmetik
soldan + - . aritmetik ve dizge
soldan << >> bitsel
yönsüz < <= > >= <> karşılaştırma
yönsüz == != === !== karşılaştırma
left & bitsel ve gönderimler
soldan ^ bitsel
soldan | bitsel
soldan && mantıksal
soldan || mantıksal
soldan ? : üç terimli
sağdan = += -= *= /= .= %= &= |= ^= <<= >>= atama
soldan and mantıksal
soldan xor mantıksal
soldan or mantıksal
soldan , birçok kullanım

Soldan ilişkilendirme, ifadenin soldan sağa, sağdan ilişkilendirme ise sağdan sola değerlendirileceği anlamına gelir.

Örnek 1 - Öncelik yönü

<?php
$a 
5// (3 * 3) % 5 = 4
$a true true 2// (true ? 0 : true) ? 1 : 2 = 2

$a 1;
$b 2;
$a $b += 3// $a = ($b += 3) -> $a = 5, $b = 5
?>

Parantezleri kodun okunabilirliğini arttırmak için kullanın.

Bilginize: Eşitlik (=) işleci çoğu işleçten daha düşük önceliğe sahip olduğundan PHP halen şuna benzer ifadelere izin vermektedir: foo() işlevinin dönüş değerini $a değişkenine atayan if (!$a = foo()) ifadesi.



Aritmetik İşleçler> <İşleçler
Last updated: Fri, 06 Nov 2009
 
add a note add a note User Contributed Notes
İşleç Önceliği
Patryk Bratkowski
07-Oct-2009 02:18
Please note that certain operators change the variable type in ways you may not expect.

If you want to append the result of an arithmetic operation to a string you have to do it in two steps:

<?php
    $ord
= $i + 1;
   
$field = "cellID" . $ord; // returns a string
   
$field = "cellID" . $i + 1; // because of the addition it returns an int
?>
headden at karelia dot ru
09-Jun-2009 11:02
Although example above already shows it, I'd like to explicitly state that ?: associativity DIFFERS from that of C++. I.e. convenient switch/case-like expressions of the form

$i==1 ? "one" :
$i==2 ? "two" :
$i==3 ? "three" :
"error";

will not work in PHP as expected
Pies
08-Feb-2009 07:22
You can use the "or" and "and" keywords' lower precedence for a bit of syntax candy:

<?php

$page
= (int) @$_GET['page'] or $page = 1;

?>

Aritmetik İşleçler> <İşleçler
Last updated: Fri, 06 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites