عوامل الزيادة والنقصان في 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
لا تأثير للزيادة والنقصان على القيم المنطقية.