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
[edit] Last updated: Fri, 23 Dec 2011

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
sağdan ~ - (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
[edit] Last updated: Fri, 23 Dec 2011
 
add a note add a note User Contributed Notes İşleç Önceliği
Christopher Schramm 02-Jul-2011 09:29
( - the function call operator - has higher precedence than ++ and --, but lower precedence than [.

Therefore you can do the following:

<?php
$func
[0] = 'exit';
$func[0]();
?>

But the following will cause a syntax error:

<?php
function func() {
    return array(
'string');
}
func()[0];
?>
charles at pilger dot com dot br 09-Feb-2011 12:00
Be very careful with the precedence. See this code:

<?php
$a
= 1;
$b = null;
$c = isset($a) && isset($b);
$d = ( isset($a) and isset($b) );
$e = isset($a) and isset($b);
var_dump($a, $b, $c, $d, $e);
?>

Result:

int(1)
NULL
bool(false)
bool(false)
bool(true) <==
kiamlaluno at avpnet dot org 12-Jul-2010 04:41
Be careful of the difference between

<?php
$obj
= new class::$staticVariable();
?>

<?php
$value
= class::$staticVariable();
?>

In the first case, the object class will depend on the static variable class::$staticVariable, while in the second case it will be invoked the method whose name is contained in the variable $staticVariable.
headden at karelia dot ru 09-Jun-2009 04: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 11: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;

?>

 
show source | credits | sitemap | contact | advertising | mirror sites