Menu

PHP Operatörleri: Aritmetik, Mantıksal, String ve Dahası

PHP operatörleri değerler üzerinde çalışır: aritmetik için +, -, *, /, %, **; atama için =, +=, .=, ??=; mantık için &&, ||, ! ve xor; string birleştirme için .; karşılaştırma için ==, ===, <=>; artırma için ++, --. Her grubu çalıştırılabilir örneklerle ve and ile && öncelik tuzağıyla öğrenin.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Bir operatör bir veya daha fazla değer alır ve yeni bir değer üretir: $a + $b toplar, $a . $b stringleri birleştirir, $a && $b mantıksal VE'dir, $a === $b karşılaştırır, $i++ artırır.

/, iki tam sayı tam bölünmedikçe bir float döndürür: 17 / 5 sonucu 3.4, 10 / 5 sonucu ise tam sayı 2 olur. Yalnızca tam kısmı istediğinizde intdiv() kullanın. Yuvarlama matematik sayfasında anlatılıyor.

Aritmetik operatörler

OperatörAdÖrnekSonuç
+Toplama7 + 29
-Çıkarma7 - 25
*Çarpma7 * 214
/Bölme7 / 23.5
%Mod (kalan)7 % 21
**Üs7 ** 249
-$aOlumsuzlama-7-7

Mod, "her N'inci eleman" ve tek/çift kontrolleri için işe yarar. Sonucu sol tarafın işaretini alır ve sıfıra bölmek yakalayabileceğiniz bir hata fırlatır:

Atama operatörleri

= bir değer saklar. Her aritmetik ve string operatörünün, bir değişkeni yerinde güncelleyen birleşik bir biçimi vardır.

??=, null birleştirme operatörü ailesine aittir. Yalnızca değişken atanmamışsa veya null ise atama yapar.

Artırma ve azaltma: ++ ve --

$i++ mevcut değeri döndürür, sonra 1 ekler. ++$i 1 ekler, sonra yeni değeri döndürür. Fark yalnızca sonucu aynı ifadede kullandığınızda görünür.

Harf hilesi, tablo sütun adlarının (A, B, ... Z, AA) sıklıkla nasıl üretildiğini gösterir.

Mantıksal operatörler: &&, ||, ! ve xor

OperatörNe zaman true
$a && $bikisi de true ise
$a || $ben az biri true ise
!$a$a false ise
$a xor $btam olarak biri true ise
$a and $b, $a or $b&& ve || ile aynı, daha düşük öncelikle

&& ve || kısa devre yapar: sol taraf sonucu zaten belirlediğinde sağ taraf değerlendirilmez. isset($user) && $user->isAdmin() ifadesini güvenli yapan budur.

and ile &&: öncelik tuzağı

and ve or, = operatöründen daha gevşek bağlanır; bu yüzden bir atamada değer saklandıktan sonra uygulanırlar. Bu klasik bir hatadır:

Düşük öncelik tek bir kalıpta işe yarar: atamanın önce gerçekleşmesini istediğiniz $file = fopen($path, 'r') or die('Cannot open');. Geri kalan her yerde && ve || kullanın.

String operatörleri: . ve .=

PHP'nin iki string operatörü vardır: . iki stringi birleştirir ("Grace" . " " . "Hopper"), .= ise bir değişkenin sonuna ekler ($html .= "<li>"). + asla string birleştirmez: "3" + "4" sayı olarak 7, "3" . "4" ise string olarak "34" olur. Stringler sayfası interpolasyonu ve tırnakları anlatır.

Karşılaştırma ve spaceship operatörü <=>

== türleri dönüştürdükten sonra karşılaştırır, === türü de kontrol eder, <=> ise -1, 0 veya 1 döndürür; sıralama callback'lerinin tam olarak ihtiyaç duyduğu da budur. Ayrıntılar ve gevşek karşılaştırma tablosunun tamamı karşılaştırma operatörleri sayfasında.

Dizi operatörleri

Dizilerde + bir birleşimdir: soldaki dizinin anahtarları kazanır ve sağdan yalnızca eksik anahtarlar eklenir. Sona eklemesini bekleyenleri şaşırtır. == aynı anahtar/değer çiftlerini kontrol eder, === ise ayrıca aynı sırayı ve türleri ister.

Bir listeyi diğerinin sonuna eklemek için array_merge() ya da spread sözdizimi [...$a, ...$b] kullanın.

Operatör önceliği

Bir ifade operatörleri karıştırdığında PHP onları sabit bir sırayla uygular. İnsanları en çok yanıltanlar, PHP 8.3'ün yazdırdığı sonuçlarla:

echo 2 + 3 * 4;        // 14: * before +
echo (2 + 3) * 4;      // 20
echo 2 ** 3 ** 2;      // 512: right to left, 2 ** 9
echo -2 ** 2;          // -4: ** before unary minus
echo "Sum: " . 2 + 3;  // Sum: 5, since PHP 8 + runs before .

Emin değilseniz parantez ekleyin. Hiçbir maliyeti yoktur ve satırı okuyan bir sonraki kişi tabloyu hatırlamak zorunda kalmaz.

Sıkça Sorulan Sorular

PHP'de and ile && arasındaki fark nedir?

İkisi de mantıksal VE'dir, ama and operatörünün önceliği = operatöründen düşüktür. Bu yüzden $x = true and false; $x içine true saklar (önce atama gerçekleşir), $x = true && false; ise false saklar. İfadelerde && ve || kullanın, and/or operatörlerini atamaların dışında tutun.

PHP'de % ne işe yarar?

% mod operatörüdür: bir tam sayı bölmesinin kalanını döndürür, bu yüzden 10 % 3 sonucu 1 olur. Sonuç sol işlenenin işaretini alır (-7 % 3 sonucu -1). Float'lar için fmod() kullanın; % 0 ise bir DivisionByZeroError fırlatır.

PHP'de bir sayının kuvveti nasıl alınır?

** operatörünü kullanın: 2 ** 10 sonucu 1024. Sağdan birleşimlidir, bu yüzden 2 ** 3 ** 2 ifadesi 2 ** 9 = 512 olur ve tekli eksiden daha sıkı bağlanır, bu yüzden -2 ** 2 sonucu -4 olur. pow(2, 10) fonksiyonu da aynı işi yapar.

PHP'de $i++ ile ++$i arasındaki fark nedir?

İkisi de $i değerine 1 ekler. $i++ (son artırma) eski değeri döndürür ve sonra artırır; ++$i (ön artırma) önce artırır ve yeni değeri döndürür. Bir for döngüsünün adımı gibi tek başına bir satırda fark yoktur.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA