Artırım ve Eksiltim İşleçleri

PHP, önceden ve sonradan artırım ve eksiltim işleçlerini destekler. Bunlar değeri bir artıran veya eksilten tek terimli işleçlerdir.

Arttırım ve Eksiltim İşleçleri
ÖrnekİsimEtkisi
++$aÖnceden artırım$a bir artırıldıktan sonra döndürülür.
$a++Sonradan artırım$a döndürüldükten sonra değeri bir artırılır.
--$aÖnceden eksiltim$a bir eksiltildikten sonra döndürülür.
$a--Sonradan eksiltim$a döndürüldükten sonra değeri bir eksiltilir.

Basit bir betik örneği:

<?php
echo "Sonradan artırım\n";
$a = 5;
var_dump($a++);
var_dump($a);

echo
"Önceden artırım\n";
$a = 5;
var_dump(++$a);
var_dump($a);

echo
"Sonradan eksiltim\n";
$a = 5;
var_dump($a--);
var_dump($a);

echo
"Sonradan eksiltim\n";
$a = 5;
var_dump(--$a);
var_dump($a);
?>

Yukarıdaki örneğin çıktısı:

 Sonradan artırım: int(5) int(6) Önceden artırım: int(6) int(6) Sonradan eksiltim: int(5) int(4) Sonradan eksiltim: int(4) int(4) 
Uyarı

Artırım ve eksiltim işleçlerinin bool türündeki değerler üstünde etkisi yoktur. İleri sürümlerde değer örtük olarak int türüne dönüşüm uygulanacağından PHP 8.3.0 ve sonrasında bir E_WARNING çıktılanır.

Eksiltim işlecinin null türünde değerler üzerinde etkisi yoktur. İleri sürümlerde değer örtük olarak int türüne dönüşüm uygulanacağından PHP 8.3.0 ve sonrasında bir E_WARNING çıktılanır.

Değer sayısal dizge değilse eksiltim işleci etkisizdir. İleri sürümlerde TypeError oluşturacak olan bu durum PHP 8.3.0 ve sonrasında bir E_WARNING çıktılanmasına sebep olur.

Bilginize:

Aşırı yüklemeyi destekleyen dahili nesnelerin toplama ve çıkarma işlemlerinde de artırım ve eksiltim yapılabilir. Böyle bir dahili nesneye örnek olarak GMP verilebilir.

PERL dizge artırım özelliği

Uyarı

Bu özelliğin PHP 8.3.0 ve sonrasında kullanımı bazı durumlarda önerilmemekte olup böyle bir durumun ortaya çıkmaması için bu özellik yerine str_increment() işlevi kullanılmalıdır.

Değer sayısal dizge değilse dizgeye artırım uygulanabilir. Bunun için dizgenin abecesaysal ASCII dizge olması gerekir. Harflerin bir sonraki harfe kadar artırılması durumunda, Z harfine ulaşıldığında artış soldaki değere taşınır. Örneğin, $a = 'Z'; $a++; için $a değeri 'AA' olur.

Örnek 1 - PERL dizge artırım örneği

<?php
echo '== Abecesel dizgeler ==' . PHP_EOL;
$i = 'W';
for (
$n=0; $n<6; $n++) {
echo ++
$s . PHP_EOL;
}
// Sayısal dizgeler farklı davranır
echo '== Sayısal dizgeler ==' . PHP_EOL;
$d = 'A8';
for (
$n=0; $n<6; $n++) {
echo ++
$d . PHP_EOL;
}
$d = 'A08';
for (
$n=0; $n<6; $n++) {
echo ++
$d . PHP_EOL;
}
?>

Yukarıdaki örneğin çıktısı:

 == Abecesel dizgeler == X Y Z AA AB AC == Sayısal dizgeler == A9 B0 B1 B2 B3 B4 A09 A10 A11 A12 A13 A14 
Uyarı

Abecesayısal dizge, sayısal dizge olarak yorumlanırsa değer int veya float türüne dönüştürülür. Bu özellikle üstel gösterimle yazılmış gerçel bir sayı gibi görünen dizgelerde ortaya çıkar. str_increment() işlevi böyle örtük tür dönüşümlerinden etkilenmez.

Örnek 2 - float türüne dönüştürülen abecesayısal dizge

<?php
$s
= "5d9";
var_dump(++$s);
var_dump(++$s);
?>

Yukarıdaki örneğin çıktısı:

 string(3) "5e0" float(6) 

Bunun nedeni, "5e0" değerinin float olarak yorumlanması ve artırılmadan önce 5,0 değerine dönüştürülmesidir.

To Top