文字列、開始番号、および長さを受け取るコースワーク用の関数を作成しました。関数は文字列を取得し、 を含むすべての文字を取得して作成された文字列を出力します。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を差し引きます