PHP, C tarzı önceden ve sonradan arttırım ve eksiltim işleçlerini destekler.
Bilginize: Arttırım ve eksiltim işleçleri sadece sayıları ve dizeleri etkiler. Diziler, nesneler ve özkaynaklar etkilenmez.
NULL
değerini eksiltmenin bir etkisi yoktur fakat arttırmanın sonucu 1'dir.
Örnek | İsim | Etkisi |
---|---|---|
++$a |
Önceden arttırım | $a bir arttırıldıktan sonra döndürülür. |
$a++ |
Sonradan arttırım | $a döndürüldükten sonra değeri bir arttı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 "<h3>Sonradan arttırım</h3>\n";
$a = 5;
echo "5 olmalı: " . $a++ . "<br />\n";
echo "6 olmalı: " . $a . "<br />\n";
echo "<h3>Önceden arttırım</h3>\n";
$a = 5;
echo "6 olmalı: " . ++$a . "<br />\n";
echo "6 olmalı: " . $a . "<br />\n";
echo "<h3>Sonradan eksiltim</h3>\n";
$a = 5;
echo "5 olmalı: " . $a-- . "<br />\n";
echo "4 olmalı: " . $a . "<br />\n";
echo "<h3>Önceden eksiltim</h3>\n";
$a = 5;
echo "4 olmalı: " . --$a . "<br />\n";
echo "4 olmalı: " . $a . "<br />\n";
?>
PHP, karakter değişkenleri üzerinde çalışırken C'nin değil Perl'in yöntemlerini izler. Örneğin, PHP ve Perl'de $a = 'Z'; $a++; ifadesi $a içinde 'AA' değerini döndürürken, C'de a = 'Z'; a++; ifadesi a içinde'[' döndürür. 'Z' için ASCII değer 90, '[' için 91'dir. Karakterlerin arttırılabileceğini fakat azaltılamayacağını ve sadece ASCII harflerin ve rakamların (a-z ve A-Z, 0-9) desteklendiğine dikkat ediniz. Diğer karakterler üzerinde arttırım ve eksiltim etkisiz olup özgün değer değişmeden döndürürlür.
Örnek 1 - Karakter değişkenleri üzerinde aritmetik işlemler
<?php
echo '== Harfler ==' . PHP_EOL;
$i = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}
// Rakam karakterleri farklı davranır
echo '== Rakamlar ==' . 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ı:
== Harfler == X Y Z AA AB AC == Rakamlar == A9 B0 B1 B2 B3 B4 A09 A10 A11 A12 A13 A14
Mantıksal değerlere arttırım ve eksiltim uygulamanın bir etkisi olmaz.