0

文字列、開始番号、および長さを受け取るコースワーク用の関数を作成しました。関数は文字列を取得し、 を含むすべての文字を取得して作成された文字列を出力します。string{n}

例えば:

string = kingsbridge, n = 4, l = 4.
string created = gsbr.  

関数の最初の 2 つの検証部分は正常に機能しますが、実際に出力される部分文字列を作成する場合は、次のようになります。

Notice: Uninitialized string offset: 11 in G:\xampp\htdocs\say\ws21C.php on line 58
Notice: Uninitialized string offset: 12 in G:\xampp\htdocs\say\ws21C.php on line 58
Notice: Uninitialized string offset: 13 in G:\xampp\htdocs\say\ws21C.php on line 58    
Notice: Uninitialized string offset: 14 in G:\xampp\htdocs\say\ws21C.php on line 58

...などなど (無限ループ)

ここに私のコードがあります:

function substring($s, $n, $l){
    $substring = "";

    if($n > length($s)){     //If asking for substring that starts with an index of the string that's greater than the actual length
        echo "Out of range";
    }
    else{
        if($l > (length($s) - ($n - 1))) { //If start is in index of string but length would mean substring would trail off string
            $newLength = ((length($s)) - ($n - 1));
            substring($s, $n, $newLength);
        }
        else{ //PROBLEM CODE
            for($letter = ($n - 1); $l; $letter++){
                $substring .= $s{$letter};  //Line 58
            }
            echo "$substring";
        }
    }
}

なぜこれが起こっているのか(または無限ループが作成されたのか)についての助けをいただければ幸いです!

ありがとうございました :)

編集:私が与えた例ではstring{4}がsになることはわかっていますが、ユーザーは数字を入力するので、必要な文字を得るために1を差し引きます

4

1 に答える 1