为什么我在这段php代码中收到一个未初始化的字符串偏移量?
我为我的作业写了一个函数,它将接收一个字符串、一个起始数字和一个长度。函数将获取字符串并输出通过获取所有字母创建的字符串,包括为什么我在这段php代码中收到一个未初始化的字符串偏移量?,php,string,offset,initialization,Php,String,Offset,Initialization,我为我的作业写了一个函数,它将接收一个字符串、一个起始数字和一个长度。函数将获取字符串并输出通过获取所有字母创建的字符串,包括string{n} 例如: string = kingsbridge, n = 4, l = 4. string created = gsbr. 函数的前两个验证部分工作正常,但当实际创建要输出的子字符串时,会出现以下情况: Notice: Uninitialized string offset: 11 in G:\xampp\htdocs\say\ws21C.ph
string{n}
例如:
string = kingsbridge, n = 4, l = 4.
string created = gsbr.
函数的前两个验证部分工作正常,但当实际创建要输出的子字符串时,会出现以下情况:
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";
}
}
}
任何关于为什么会发生这种情况(或者为什么会创建一个无限循环)的帮助都将不胜感激
谢谢:)
编辑:我知道在我给出的示例中,字符串{4}将是s,但用户输入数字,因此我将减1以获得他们需要的字母您的
for
循环是一团混乱,纯粹而简单。仔细看看(首先清除无限循环问题):
所以,您将$letter设置为$n-1,我假设您希望循环所有字母。然后,循环条件是“if$l”。在for循环中,你根本没有改变$l的值,那么你怎么能期望程序突破它呢
如果你试图循环所有的字母,你最好做$letter=$n-1$字母>=0$字母--
最后,我需要
$s
的内容来调试另一个问题。编辑你的问题 哦,老兄。。。我在干什么哈哈,这太明显了,我的错!哈哈,我不习惯用php编程,所有的美元和其他东西让我觉得有点乱。我把它改为“$letter<$l”,一切都很好:)谢谢你的帮助!
for($letter = ($n - 1); $l; $letter++){
$substring .= $s{$letter}; //Line 58
}