+
95
-

如何将php的源码ifelse逻辑变成goto逻辑?

如何将php的源码ifelse逻辑变成goto逻辑?

例如下面的代码

<?php
exampleFunction(1,2);
function exampleFunction(\$x, \$y) {
    \$sum = \$x + \$y;
    if (\$sum > 10) {
        echo "Sum is greater than 10.";
    } else {
        echo "Sum is 10 or less.";
    }
}

转换成

<?php
exampleFunction(1,2);
function exampleFunction($x, $y) {
    $sum = $x + $y;
    if ($sum > 10) goto label1;
    else goto label2;
    label1: echo "Sum is greater than 10.";
    goto end;
    label2: echo "Sum is 10 or less.";
    end:
}



网友回复

+
15
-
<?php
function convertToGoto($phpCode) {
    $lines = explode("\n", $phpCode);
    $result = [];
    $gotoLabels = [];
    $labelCounter = 1;
    $inFunction = false;

    foreach ($lines as $line) {
        $trimmedLine = trim($line);

        // 处理函数声明
        if (preg_match('/^function\s+\w+\s*\(.*\)\s*\{/', $trimmedLine)) {
            $inFunction = true;
            $result[] = $line;
            continue;
        }

        //处理函数体
        if ($inFunction) {
            // 递增函数体括号计数
            if (strpos($trimmedLine, '{') !== false) {
                $result[] = $line;
                continue;
            }
            if (strpos($trimmedLine, '}') !== false) {
                $result[] = $line;
                $inFunction = false;
                // 插入所有标签
               ...

点击查看剩余70%

我知道答案,我要回答