Dersimizin bu bölümünde Php operatörleri konusunu öğreneceğiz.

Programlamada operatör nedir ?

Php programlama dilinde operatör, başka bir değer üretmek üzere bir veya daha fazla değer (programcı dilinde ifade) alan bir şeydir (yani, bu yapı bir ifade haline gelir). Kısacası değişken ve değerler üzerinde çeşitli işlemler yapmaya yararlar.

Php operatörleri

PHP Aritmetik operatörler

Aritmetik operatörler sayısal değerler için kullanılırlar : toplama ,çıkarma,çarpma vs.
Operatör Adı Örnek Sonuç
+ Toplama $x + $y x ve y 'nin toplam değeri
- Çıkarma $x - $y x ' den y sayısını çıkarma
* Çarpma $x * $y x ve y sayılarını çarpma
/ Bölme $x / $y x 'i y sayısı ile bölme
% Kalan $x % $y x 'in y sayısına bölümünden kalan
** Üs alma $x ** $y x üzeri y
<?php
$x =10 ;
$y =2 ;

$toplama = " toplam : $x + $y ";
$cikarma = " çıkarma : $x - $y ";
$bolme = " bölme : $x / $y ";
$çarpma = " çarpma $x * $y ";
$kalan = "kalan : $x % $y " ;
$üs =" üstel işlem : $x ** $y ";
?>
Ekran çıktısı : toplam : 12
çıkarma : 8
bölme : 5
çarpma : 50
kalan : 0
üstel işlem : 100

PHP Atama Operatörleri

Php programlama dilinde atama operatörü = ( eşittir ) işaretidir.Burada yapılan işlem eşittir işaretinin sağındaki ifadenin değeri , solundaki terimin değeri haline getirmektir.

- Sayısal ifadeler için kullanılabilir.
- String ifadeler için kullanılabilir.
- Bitsel operatörler için kullanılabilir.

<?php

# sayısal ifadeler için " = " kullanımı
$x =10 ;
echo $x += 5 ; // x = x + 5 
echo $x -= 5 ; // x = x - 5 
echo $x /= 5 ; // x = x / 5 
echo $x *= 5 ; // x = x * 5 
echo $x %= 5 ; // x = x % 5 

# string ifadeler için " = " kullanımı

$text=" merhaba " ;
$text2=" dünya " ;
echo $text .= $text2 ; // $text = $text.$text2

# bitsel operatörler için " = " kullanımı 

$a &= $b     $a = $a & $b     // bitsel ve
$a |= $b     $a = $a | $b     // bitsel veya
$a ^= $b     $a = $a ^ $b     // bitsel xor
$a <<= $b     $a = $a << $b   // Left shift
$a >>= $b     $a = $a >> $b   // Right shift
?>

PHP Bitsel Operatörler

Operatör Adı Örnek Sonuç
& ve $x & $y Hem $x hem de $y'de 1 olan bitler sonuçta 1 yapılır
| veya $x | $y $x veya $y'de 1 olan bitler sonuçta 1 yapılır
^ ayrıcalıklı veya $x ^ $y Hem $x hem de $y'de 0 veya 1 olan bitler sonuçta 0, diğerleri 1 yapılır
~ değil ~ $x $x'in 0 olan bitleri 1, 1 olanları 0 yapılır
<< sola kaydırma $x << $y $x'in bitleri $y adım sola kaydırılır (her adım ikiyle çarpma işlemine denktir)
>> sağa kaydırma $x >> $y $x'in bitleri $b adım sağa kaydırılır (her adım ikiye bölme işlemine denktir)
<?php
$x =7; // bit değeri : 111
$y =5; // bit değeri 101
echo $x & y ;
echo $x | y ;
echo $x ^ y ;
echo ~ $x ;
echo 8 << 3 ;
echo 8 >> 3 ;

?>
Bütün bitsel işlemlerde değerler kendilerine ait bit değerlerine çevrilerek işlem yapılır.
Örnek : 7 satısının bit değeri 111 ve 5 sayısının bit değeri 101 'dir.

- $x & y burada 111 ile 101 değerleri ile işlem yapacağız.
Karşılaştırma yaparken her iki tarafın birbirine denk gelen basamakları baz alınır.
Yani 111 sayısının birler basamağı ile 101 sayısının birler basamağı karşılaştırılır. Burada iki taraftada birbirine denk gelen sayılar 1 ise sonuç 1 olur.Aksi durumda 0 olur.
Sonuç : 101 olur ve bu da zaten 5 sayısının bit değerine eşittir ve ekran çıktısı da 5 olur.

- $x | y bit değerlerinin birbirine denk gelen basmaklarından bir tanesi 1 ise sonuç 1 olur.
Sonuç : 111 olur ve bu da 7 sayısına eşittir.Ekran çıktısı 7 olur.

- $x ^ y bit değerlerinin birbirine denk gelen basmakları birbirinden farklı ise sonuç 1 olur. Yani bir tanesinin birler basamağı 1 diğerinin 0 ise sonuç 1 olur.
Sonuç : 10 olur ve bu da 2 sayısına eşittir.Ekran çıktısı 2 olur.
Koşullu veya işleminde sonuç 010 olması gerekiyor ; fakat biz 10 olarak belirttik.Bunun nedeni işlemerde 0 baştaysa silinir.
- 8 << 3 burada soldaki sayı iki ile çarpılır ve çıkan sonuç tekrar 2 ile çarpılır.Sağdaki sayı işlemin kaç defa tekrarlanacağını belirtir.
8 * 2 = 16
16 * 2 = 32
32 * 2 = 64 sonucunu elde ederiz.Ekran çıktısı 64.

- 8 >> 3 burada soldaki sayı iki ile bölünür ve çıkan sonuç tekrar 2 ile bölünür.Sağdaki sayı işlemin kaç defa tekrarlanacağını belirtir.
8 / 2 = 4
4 / 2 = 2
2 / 2 = 1 sonucunu elde ederiz.Ekran çıktısı 64.

PHP Karşılaştırma Operatörleri

Php karşılaştırma operatörü iki değeri karşılaştırmak için kullanılırlar.Bu iki değer çeşitli türlerde olabilirler.
Operatör Adı Örnek Sonuç
== Eşittir $x == $y $x ve $y eşit ise doğrudur
=== Aynı ( denk ) $x === $y $x ve $y 'nin hem değerleri hem de türleri aynı ise doğrudur.
!= Eşit değil $x != $y $x ve $y eşit değilse doğrudur.
<> Eşit değil $x <> $y $x ve $y eşit değilse doğrudur.
!== Aynı değil $x !== $y $x ve $y 'nin hem değerleri hem de türleri aynı değilse doğrudur.
> Büyüktür $x > $y $x değeri $y ' den büyükse doğrudur.
< Küçüktür $x < $y $x değeri $y ' den küçükse doğrudur.
>= Büyük eşittir $x >= $y $x değeri $y'den büyük veya eşit ise doğrudur.
<= Küçük eşittir $x <= $y $x değeri $y'den küçük veya eşit ise doğrudur.
<=> Uzaygemisi $x <=> $y $x değeri $y 'den büyük ise 1 küçük ise -1 eşit ise 0 sonucu döner.PHP 7 itibaren kullnılabilir..
Örneklerimizde var_dump( ) metodunu kullanacağız.Metot ile sonuçların dopruluğuna bakacağız.
<?php
$x = 20 ;
$y = "20";
$z = 20 ;
$a = 5 ;

#eşitlik kontrolü

echo nl2br ("\n".var_dump($x==$y)); // true
echo nl2br ("\n".var_dump($x==$a)); // false

#denklik kontrolü

echo nl2br ("\n".var_dump($x===$y)); // false
echo nl2br ("\n".var_dump($x===$z)); // true

#eşit değil kontrolü
echo nl2br ("\n".var_dump($x!=$y)); // false
echo nl2br ("\n".var_dump($x!=$a)); // true

#denk değil kontrolü
echo nl2br ("\n".var_dump($x!==$y)); // true
echo nl2br ("\n".var_dump($x!==$z)); // false

#küçüktür büyüktür kontrolü
echo nl2br ("\n".var_dump($x < $y)); // false
echo nl2br ("\n".var_dump($a < $x)); // true
echo nl2br ("\n".var_dump($x > $a)); // true

#küçük ve büyük eşittir  kontrolü
echo nl2br ("\n".var_dump($x <= $y)); // true
echo nl2br ("\n".var_dump($x <= $a)); // false
echo nl2br ("\n".var_dump($x <= $z)); // true
echo nl2br ("\n".var_dump($x >= $a)); // true

#uzaygemisi
echo nl2br ("\n".var_dump($x <=> $z)); // 0
echo nl2br ("\n".var_dump($x <=> $a)); // 1
echo nl2br ("\n".var_dump($x <=> $a)); // 1
echo nl2br ("\n".var_dump($x <=> $y)); // 0
?>

PHP Arttırım Eksiltim Operatörleri

Php arttırım eksiltim operatörleri sayısal ve dize ifadelerin değerlerini azaltmaya veya arttırmaya yarar.C diline benzer şekilde önceden veya sonradan arttırım ve eksiltim işlemleri yapılabilir.
Örnek Adı Sonuç
++$x Önceden arttırım $x değeri bir arttırıldıktan sonra sonuç döner
$x++ Sonradan arttırım $x değeri döner , sonra bir arttırılır
--$x Önceden eksiltim $x değeri bir eksiltildikten sonra sonuç döner
$x-- Sonradan eksiltim $x değeri döner , sonra bir eksiltilir
<?php

#önceden arttırım
$x =6;
echo ++$x; // sonuç : 7

#sonradan arttırım
$y =4;
echo $y++; // sonuç : 4
echo $y; // sonuç : 5

#önceden eksiltim
$a =6;
echo --$a; // sonuç : 5

#sonradan eksiltim
$b =4;
echo $b--; // sonuç : 4
echo $b; // sonuç : 3

?>

String ( dize ) ifadelerle arttırım ve eksiltim

PHP programlama dili C dilinin aksine Perl dili gibi string ifadeler için arttırım veya eksiltim uygular.

Örneğin $x = "Z" olsun ve $x++ ifadesi Php dilinde "AA" değerini döndürür ; fakat C dilinde " [ " değerini döndürür.
<?php


$x ="a";

for ($i=0; $i<15; $i++) {
    echo ++$x . PHP_EOL;
} ;

?>

Ekran çıktısı : b c d e f g h i j k l m n o p
<?php


$x ="x";

for ($i=0; $i<10; $i++) {
    echo ++$x . PHP_EOL;
} ;

?>

Ekran çıktısı : y z aa ab ac ad ae af ag ah
UYARI : Php programlama dilinde string ifadelerde eksiltim işlemi yapılamaz.
<?php


$x ="x";

for ($i=10; $i>0; $i--) {
    echo --$x . PHP_EOL;
} ;

?>

Ekran çıktısı : x x x x x x x x x x

PHP Mantıksal Operatörler

Php programlama dilinde mantıksal operatörler koşullu ifadeleri için kullanılırlar.
Örnek Adı Sonuç
$a and $b ve $a ve $b değerlerinin ikisi de doğruysa.
$a or $b veya $a veya $b doğruysa.
$a xor $b koşullu veya $a ve $b değerlerinden birisi doğruysa sonuç doğru , her ikisi de doğruysa yanlış.
!$a değil $a doğru değilse.
$a && $b ve $a ve $b değerlerinin ikisi de doğruysa.
$a || $b veya $a veya $b doğruysa.
<?php
$a = 20 ;
$b = "20" ;

# and mantıksal operatörü

if ( $a =20 and $b ="20" ) {
    echo " doğru " ;
};

# && mantıksal operatörü

if ( $a =20 && $b ="20" ) {
    echo " doğru " ;
};

# or mantıksal operatörü

if ( $a =20 or $b =70 ) {
    echo " doğru " ;
};

# || mantıksal operatörü

if ( $a =20 || $b =70 ) {
    echo " doğru " ;
};

# ! mantıksal operatörü

if ( !$c ) {
    echo " doğru " ;
};


# xor mantıksal operatörü

if ( $a =20 xor $b ="20"  ) {
    echo " doğru " ;
};



?>

Yukarıdaki örneklerimizde xor mantıksal operatörüne kadar hepsi ekrana " doğru " çıktısını verecek ; fakat xor örneğimizde ekrana hiçbirşey yazdırılmayacak neden ?
xor mantıksal operatörü kullanıldığında verilen koşullardan sadece bir tanesi koşulu sağlamalıdır.
if ( $a =20 xor $b ="70" ) { ... kodumuzda ise koşulların ikiside sağlanıyor ( $a=20 $b="20" ) bu durumda or veya || mantıksal operatörlerden beri kullanılmalıydı.

PHP Dize Operatörleri

PHP dize operatörleri iki kısımdan oluşur biri iki dizeyi birbiri ile birleştirir ( . ) diğeri ise ikinci dizeyi birinci dizeye ekler ( .= ).
<?php
$a = " seni " ;
$b = " seviyorum ";
$c = $a.$b ;

echo $c ;
echo $a.=$b ;
echo $a ; // $a değişken değeri artık " seni seviyorum " oldu

?>

Yukarıdaki örneklerimizin ikisi de ekrana " seni seviyorum " yazdıracak.Buradaki tek fark .= operatörünün ikinci dizeyi birinci dizeye eklmesidir.

PHP Dizi ( Array ) Operatörleri

Operatör Adı Örnek Sonuç
+ birleştirme $a + $b $a ve $b dizilerini birleştirir.
== eşitlik $a == $b $a ve $b dizi elemanlarının anahtar ve anahtar değerleri eşitse.
=== aynılık $a === $b $a ve $b dizi elemanlarının anahtar , anahtar değerleri ve türleri eşitse.
!= eşit değil $a === $b $a ve $b dizi elemanlarının anahtar ve anahtar değerleri eşit değilse.
<> eşit değil $a <> $b $a ve $b dizi elemanlarının anahtar ve anahtar değerleri eşit değilse.
!== aynı değil $a !== $b $a ve $b dizi elemanlarının anahtar , anahtar değerleri ve türleri eşit değilse.

- DİZİ BİRLEŞTİRME

<?php
$a = array( "a"=>"opel" ,"b"=>"fiat" ,"c"=>"ford" ) ;
$b = array( "x"=>"arı" ,"y"=>"kelebek" ,"z"=>"at" ) ;
$c = $a+$b ;

echo var_dump($c) ;


?>

Ekran çıktısı : array(6) { ["a"]=> string(4) "opel" ["b"]=> string(4) "fiat" ["c"]=> string(4)
"ford" ["x"]=> string(4) "arı" ["y"]=> string(7) "kelebek" ["z"]=> string(2) "at" }
Örneğimizi biraz değiştirelim :
<?php
$a = array( "1"=>"opel" ,"3"=>"fiat" ,"c"=>"ford" ) ;
$b = array( 1=>"arı" ,2=>"kelebek" ,3=>"at" ) ;
$c = $a+$b ;

echo var_dump($c) ;


?>

Ekran çıktısı : array(4) { [1]=> string(4) "opel" [3]=> string(4) "fiat" ["c"]=> string(4) "ford" [2]=> string(7) "kelebek" }
Görüldüğü gibi yeni dizimiz 4 elemanlı oldu sizce neden ?
PHP ' de diziler birbirlerine eklenirken önce sol taraftaki dizi ele alınır daha sonra sağ taraftaki diziye bakılır. Eğer birinci dizideki anahtar ikinci dizide var ise ikinci dizideki o anahtar silinir ve eklenmez.
- Örneğimizde de buna benzer durum oluştu :
$a = array( "1"=>"opel" ,"3"=>"fiat"... burada "1" ve "3" anahtarları
$b = array( 1=>"arı" ,.., 3=>"at" ) dizisinde de mevcut.
Önemli bir husus ta şu :
Anahtarlar oluşturulurken eşitlik aranır denklik ( aynılık ) aranmaz.Yani " 1 " anahtarı 1 anahtarıyla aynıdır.

- EŞİTLİK SORGULAMA

<?php

$a = array( "1"=>"opel" ,"2"=>"fiat" ,"3"=>"ford" ) ;
$b = array( "1"=>"opel" ,"2"=>"fiat" ,"3"=>"anadol" ) ;

echo var_dump($a==$b) ; // bool(false) çıktısı oluşur

$x = array( "1"=>"opel" ,"2"=>"fiat" ,"3"=>"ford" ) ;
$y = array( "1"=>"opel" ,"2"=>"fiat" ,"3"=>"ford" ) ;

echo var_dump($x==$y) ; // bool(true) çıktısı oluşur

$c = array( "1"=>"opel" ,"2"=>"fiat" ,"3"=>"ford" ) ;
$d = array( 1=>"opel" ,2=>"fiat" ,3=>"ford" ) ;

echo var_dump($c==$d) ; // bool(true) çıktısı oluşur

$f = array( "1"=>"opel" ,"2"=>"fiat" ,"3"=>"ford" ) ;
$g = array( "1"=>"a" ,"2"=>"b" ,"3"=>"ford" ) ;

echo var_dump($c==$d) ; // bool(false) çıktısı oluşur
echo var_dump($c!=$d) ; // bool(true) çıktısı oluşur
echo var_dump($c<>$d) ; // bool(true) çıktısı oluşur


?>

- DENKLİK SORGULAMA

<?php

$a = array( "1"=>"arı" ,"2"=>"kelebek" ,"3"=>"at" ) ;
$b = array( "1"=>"arı" ,"2"=>"kelebek" ,"3"=>"at" ) ;

echo var_dump($a===$b) ; // bool(true) çıktısı oluşur

$x = array( "1"=>"arı" ,"2"=>"kelebek" ,"3"=>"at" ) ;
$y = array( 1=>"arı" ,2=>"kelebek" ,3=>"at" ) ;

echo var_dump($x===$y) ; // bool(true) çıktısı oluşur

$c = array( "1"=>"arı" ,"2"=>"kelebek" ,"3"=>"at" ) ;
$d = array( "1"=>"zürafa" ,"2"=>"kelebek" ,"3"=>"at" ) ;

echo var_dump($c===$d) ; // bool(false) çıktısı oluşur
echo var_dump($c!==$d) ; // bool(true) çıktısı oluşur



?>

PHP Tür Operatörleri

PHP tür operatörleri belli bir sınıfın nesnel özelliği olup olmadığını test eder.Test işlemi instanceof ifadesi ile yapılır.
<?php

class hayvanlar
{
}

class zürafa
{
}
$x = new hayvanlar;

var_dump($x instanceof hayvanlar);
var_dump($x instanceof zürafa);



?>

Ekran çıktısı : bool(true) bool(false)

PHP Koşullu Atama Operatörleri

Php koşullu atama operatörleri iki tanedir.
- ?: ifadesi ile koşullu atama. Sözdizimi : $x= $y? $a:$b
Burada $x değişkeni $y değeri varsa $a 'ya yoksa $b'ye eşitlenir.
<?php
$x ="merhaba" ;
$y =$x?"nasılsın?":"hoşçakal" ;

echo $y."<br>" ;// ekran çıktısı " nasılsın "
$a;
$y =$a?"nasılsın?":"hoşçakal" ;

echo $y ; // ekran çıktısı " hoşçakal "

?>

- ?? ifadesi ile koşullu atama. Sözdizimi : $x = $y ?? $a
Burada $x değişkeni $y değişkeni varsa $y değişkenine yoksa $a değişkenine eşitlenir.
<?php
$x;
$y =$x?"merhaba";
echo $y."<br>" ; // " merhaba " çıktsı

$x="istanbul";
$y =$x?"ankara";
echo $y."<br>" ; // " istanbul " çıktısı

$x=null;
$y =$x?"merhaba"; // " merhaba " çıktısı
echo $y."<br>" ;

$x="";
$y =$x?"merhaba"; // hiçbir çıktı oluşmaz.
echo $y."<br>" ;

$x=true;
$y =$x?"merhaba"; 
echo $y."<br>" ; // 1 çıktısı oluşur.

$x=false;
$y =$x?"merhaba"; 
echo $y."<br>" ; // hiçbir çıktı oluşmaz.

?>

Sonraki dersimizin konusu : Php değişkenleri olacak.