goto في PHP
(PHP 5 >= 5.3.0, PHP 7)
يمكن استخدام عامل goto
للانتقال إلى قسم آخر في البرنامج، وتعيّن نقطة الانتقال هذه بواسطة وسم متبوعٍ بنقطتين رأسيتين (:)، وتكون طريقة الانتقال باستخدام العامل goto
متبوعًا بالوسم المراد الانتقال إليه. هناك بعض القيود المفروضة على استخدام goto
، إذ يجب أن يكون الوسم الهدف في نفس الملف ونفس السياق (context)، بمعنى أنّه لا يمكن الانتقال من داخل الدالة أو التابع إلى الخارج كما لا يمكن الانتقال إلى الداخل. لا يمكن أيضًا الانتقال إلى أي نوع من أنواع الحلقات أو إلى بنية switch، ولكن يمكن الانتقال إلى نقاط خارجها، ومن الاستخدامات الشائعة هو استخدام goto
بدلًا من عبارة break
متعددة المستويات.
المثال 1: مثال على goto
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
تعطي الشيفرة السابقة المخرجات التالية:
Bar
المثال 2: مثال على استخدام goto
في حلقة تكرارية
<?php
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
if($j==17) goto end;
}
}
echo "i = $i";
end:
echo 'j hit 17';
?>
تعطي الشيفرة السابقة المخرجات التالية:
j hit 17
المثال 3: هذه الشيفرة لن تعمل
<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
loop:
}
}
echo "$i = $i";
?>
تعطي الشيفرة السابقة المخرجات التالية:
Fatal error: 'goto' into loop or switch statement is disallowed in
script on line 2
ملاحظة: أصبح العامل goto
متوافرًا في الإصدار 5.3 من PHP.