PHP.mk документација

goto

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

control-structures.goto.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека control-structures.goto.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
goto

Референца за `control-structures.goto.php` со подобрена типографија и навигација.

control-structures.goto.php

goto

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

What's the worse thing that could happen if you use goto?

Некои од горенаведените примери се поврзани со специфичен сервер за бази на податоци, но тоа не значи дека сличен напад е невозможен против други производи. Вашиот сервер за бази на податоци може да биде слично ранлив на друг начин. Сликата е со дозвола од

На goto оператор може да се користи за скок на друг дел во програмата. Целната точка е специфицирана со case-sensitive етикета проследена со двоеточие, а инструкцијата е дадена како goto проследена со посакуваната целна етикета. Ова не е целосно неограничено goto. Целната етикета мора да биде во истата датотека и контекст, што значи дека не можете да скокнете надвор од функција или метод, ниту пак можете да скокнете во нив. Исто така, не можете да скокнете во било каков вид на циклус или структура на префрлување. Можете да скокнете надвор од нив, а честа употреба е да се користи goto наместо повеќе нивоа break.

Пример #1 goto example

<?php

goto a;
echo
'Foo';

a:
echo
'Bar';

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

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';

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

j hit 17

Пример #3 Ова нема да работи

<?php

goto loop;
for (
$i = 0, $j = 50; $i < 100; $i++) {
while (
$j--) {
loop:
}
}
echo
"$i = $i";

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Fatal error: 'goto' into loop or switch statement is disallowed in
script on line 2

Белешки од корисници 4 белешки

(PHP 5 >= 5.3.0, PHP 7, PHP 8)
пред 5 години
You should mention the label can't be a variable
devbyjesus на example dot com
пред 4 години
the problem of goto is that it is a good feature but in a large codebase it reduces the readability of the code . that's all . i try to not use it to think about the person who is going to read after me .
georgy dot moshkin на techsponsor dot io
пред 1 година
You can use goto to hide large HTML blocks without using echo():

<html><body>

<?php if ($hide_form_and_script) { goto label_1;} ?>

<form action="" method="post">
<!-- some HTML here -->
</form>
<script>
let a='test'; // no need to escape nested quotes as with echo()
// some JavaScript here
</script>

<?php label_1: ?>

</body></html>
BPI
3 години пред
You can jump inside the same switch. This can be usefull to jump to default
<?php
$x=3;
switch($x){
    case 0:
    case 3:
        print($x);    
        if($x)
            goto def;
    case 5:
        $x=6;
    default:
        def:
        print($x);
}
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.