عوامل الزيادة والنقصان في PHP

من موسوعة حسوب
< PHP

تدعم PHP عوامل الزيادة والنقصان السابقة واللاحقة المماثلة للعوامل المستخدمة في لغة C.

ملاحظة: تؤثر عوامل الزيادة والنقصان على الأعداد والسلاسل النصية فقط، ولا تتأثر المصفوفات والكائنات والموارد بهذه العوامل. لا يؤثر عامل النقصان على قيم NULL ولكن استخدام عامل الزيادة يعود بالنتيجة 1.

المثال الاسم التأثير
‎++$a‎ الزيادة السابقة زيادة قيمة المتغير ‎$a بمقدار 1، ثم إعادة القيمة الجديدة للمتغير ‎$a.
‎$a++‎ الزيادة اللاحقة إعادة قيمة ‎$a، ثم زيادة القيمة بمقدار 1.
‎--$a النقصان السابق إنقاص قيمة المتغير ‎$a بمقدار 1، ثم إعادة القيمة الجديدة للمتغير ‎$a.
‎$a--‎ النقصان اللاحق إعادة قيمة ‎$a، ثم إنقاص القيمة بمقدار 1.

في ما يلي مثال على شيفرة بسيطة:

<?php
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Should be 5: " . $a++ . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";

echo "<h3>Preincrement</h3>";
$a = 5;
echo "Should be 6: " . ++$a . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";

echo "<h3>Postdecrement</h3>";
$a = 5;
echo "Should be 5: " . $a-- . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";

echo "<h3>Predecrement</h3>";
$a = 5;
echo "Should be 4: " . --$a . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
?>

تتبع PHP اصطلاحات لغة Perl لا لغة C عند إجراء العمليات الحسابية على متغيرات الحروف. فعلى سبيل المثال، في PHP و Perl فإن ‎$a = 'Z'; $a++;‎ تحول قيمة المتغير ‎ $aإلى 'AA'، أما في C فإن a = 'Z'; a++‎ تحول a إلى ']' (قيمة 'Z' في ترميز ASCII هي 90، وقيمة ']' هي 91). لاحظ أن متغيرات الحروف يمكن زيادتها ولا يمكن إنقاصها، ومع ذلك فإن قيم ASCII الصرفة من الحروف والأرقام (a-z، A-Z، و 0-9) هي المدعومة فقط، ولا تؤثر عملية الزيادة والنقصان على متغيرات الحروف الأخرى، ولا يطرأ أي تغيير على السلسلة النصية الأصلية.

المثال 1: العمليات الحسابية على متغيرات الحروف

<?php
echo '== Alphabets ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
    echo ++$s . PHP_EOL;
}
// تسلك محارف الأرقام سلوكًا مختلفًا
echo '== Digits ==' . 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;
}
?>

تكون مخرجات المثال السابق بالصورة التالية:

== Characters ==
X
Y
Z
AA
AB
AC
== Digits ==
A9
B0
B1
B2
B3
B4
A09
A10
A11
A12
A13
A14

لا تأثير للزيادة والنقصان على القيم المنطقية.

مصادر