我有这个代码,由于某种原因,它保留在一个无限循环,当它假设只是打印所有可能的子字符串。这是完整功能的一部分。该函数的目的是从字符串$ str1中找到的字符串$ str2返回子字符串的索引。非常感谢您的帮助。PHP substring找到无限循环错误
$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;
}
}
}
}
}
也许你有如何提取匹配的子指数另一个想法,我也可以尝试
@丹,抱歉,不,他正在推动$ tmp的声明。 $肽2保持不变。 – CarCzar 2014-09-02 17:53:19
array_push($ tmp,$ peptide2 [$ k]);增加$ tmp数组的长度,而不是$ peptide2数组。当我在$ str2的末尾使用相同的字符时,问题就来了。如果我用$ str2测试它作为$ str1的完美子字符串,那么它工作得很完美。但是当我在开始或结束修改$ str2时,它不起作用 – 2014-09-02 17:55:36