PHP - 如果在函数中使用,则比较数组和删除元素中的元素

时间:2014-09-04 22:45:45

标签: php arrays string iteration

我有一个包含字符串的$ test数组。我还有两个函数,replaceOverlap合并两个重叠的字符串和findNested,它找到两个字符串中的一个是另一个字符串的子字符串。代码是PHP

我想要做的是迭代$ test数组并取出每个元素($表位)并将其与数组中其余的$表位进行比较,因为还有一些规则在算法。问题是,如果我只想打印在$ test数组的其余部分找到的最大重叠嵌套字符串,然后从数组中删除那些已合并的字符串。这是我到目前为止的代码。任何帮助将非常感激。

$test=array(AVNIVGYSNAQGVDY,DIKYTWNVPKI,DIKYTWNVPKIA,DIKYTWNVPKIAPKSEN,GCHGSEPCIIHRGK,IDGLEVDVPGIDPNAC,IGIKDLRAFQHYDGRTI,IIHRGKPFQLEAV,IKYTWNVPKIAPKSEN,KPFQLEAVFEANQNT,LRQMRTVTPIRMQGG,NFLESLKYVEANKGAIN,PCIIHRGKPFQLEAV,PLVKGQQYDIKYTWNVP,QQYDIKYTWNVPKI,QQYDIKYTWNVPKIA,QQYDIKYTWNVPKIAP,QQYDIKYTWNVPKIAPK,QQYDIKYTWNVPKIAPKS,QQYDIKYTWNVPKIAPKSE,QQYDIKYTWNVPKIAPKSEN,QYDIKYTWNVPK,QYDIKYTWNVPKI,QYDIKYTWNVPKIAPKS,QYDIKYTWNVPKIAPKSEN,RFGISNYCQIYPPNV,SAYLAHRNQSLDLAEQELVDCAS,TAIAVIIGIKDLRAFQH,TWNVPKIAPKSENVVVT,YAYVAREQSCR,YDIKYTWNVPK,YDIKYTWNVPKI,YDIKYTWNVPKIA,YDIKYTWNVPKIAPKSEN);

$i=0;
foreach ($test as $epitope){
    $str1=$epitope;
    for ($j = $i; $j < count($test); ++$j) {
        $str2=$test[$j];
        $value1 = replaceOverlap($str1,$str2);
        $value2 = replaceOverlap($str2,$str1);
        $value3 = findNested($str1,$str2);
        if (replaceOverlap($str1,$str2)!=false){
            array_splice($test[$j]);
            print $value1;echo"</br>";
        }
        elseif (replaceOverlap($str2,$str1)!=false){
            array_splice($test[$j]);
            print $value2;echo"</br>";
        }
        elseif (findNested($str1,$str2)!=false){
            array_splice($test[$j]);
            print $value3;echo"</br>";
        }
    }
    $i=$i+1;
}

0 个答案:

没有答案