PHP子字符串查找无限循环错误
我有一段代码,出于某种原因,它保持在一个无限循环中,假设它只打印所有可能的子字符串。这是完整函数的一部分。函数的目的是从字符串$str1中找到的字符串$str2返回子字符串的索引。非常感谢你的帮助PHP子字符串查找无限循环错误,php,string,loops,infinite-loop,Php,String,Loops,Infinite Loop,我有一段代码,出于某种原因,它保持在一个无限循环中,假设它只打印所有可能的子字符串。这是完整函数的一部分。函数的目的是从字符串$str1中找到的字符串$str2返回子字符串的索引。非常感谢你的帮助 $str1='QYDIKYTWNVPKIAPKS'; $str2='KYTWNVPKSS'; print($str1);echo"</br>";print($str2);echo"</br>"; function overlapping($str1,$str2) { $
$str1='QYDIKYTWNVPKIAPKS';
$str2='KYTWNVPKSS';
print($str1);echo"</br>";print($str2);echo"</br>";
function overlapping($str1,$str2) {
$peptide1 = str_split($str1);
$peptide2 = str_split($str2);
$longest_seq=array();
$len=count($peptide2)-1;
for ($i = 0; $i < count($peptide1); ++$i) {
for ($j = 0; $j < count($peptide2); ++$j) {
if ($peptide2[$j]==$peptide1[$i]){
$k=$j;
$start=$j;
$l=$i;
$tmp=array();
while ($peptide2[$k]==$peptide1[$l]){
array_push($tmp, $peptide2[$k]);
$substring=implode($tmp);
print $substring;
echo"</br>";
$k=$k+1;
$l=$l+1;
}
}
}
}
}
$str1='QYDIKYTWNVPKIAPKS';
$str2='KYTWNVPKSS';
印刷品(str1美元);回声“”;印刷品(str2美元);回声“”;
函数重叠($str1,$str2){
$peptine1=str_split($str1);
$peptide2=str_分割($str2);
$longest_seq=数组();
$len=计数($e2)-1;
对于($i=0;$i<计数($1);+$i){
对于($j=0;$j”;
$k=$k+1;
$l=$l+1;
}
}
}
}
}
也许您对如何提取匹配子字符串的索引有另一种想法,我也可以尝试一下,您从不检查以确保$k和$l是有效的偏移量。请在此处查看:
while (isset($peptide2[$k]) && isset($peptide1[$l]) && $peptide2[$k]==$peptide1[$l]){
而不是
while ($peptide2[$k]==$peptide1[$l]){
我不确定这是否与您的问题有关,但我总是在for循环中发布增量
for ($i = 0; $i < count($peptide1); $i++) {
// do stuff
}
for($i=0;$i
@Dan,对不起,没有,他在那份声明中提到了$tmp$肽2保持不变;增加$tmp数组的长度,而不是$peptide2数组的长度。当我在$str2结尾使用相同的字符时,问题就出现了。如果我使用$str2作为$str1的完美子字符串来测试它,那么它的工作就完美了。但是,当我在开始或结束时修改$str2时,它不起作用