dsai1991 2011-07-24 15:54
浏览 755
已采纳

如何检查两个字符串是否包含相同的字母?

$textone = "pate"; //$_GET
$texttwo = "tape";
$texttre = "tapp";

if ($textone ??? $texttwo) {
echo "The two strings contain the same letters";
}
if ($textone ??? $texttre) {
echo "The two strings NOT contain the same letters";
}

What if statement am I looking for?

  • 写回答

2条回答 默认 最新

  • dongzhu7329 2011-07-24 15:59
    关注

    I suppose a solution could be to, considering the two following variables :

    $textone = "pate";
    $texttwo = "tape";
    


    1. First, split the strings, to get two arrays of letters :

    $arr1 = preg_split('//', $textone, -1, PREG_SPLIT_NO_EMPTY);
    $arr2 = preg_split('//', $texttwo, -1, PREG_SPLIT_NO_EMPTY);
    

    Note that, as pointed out by @Mike in his comment, instead of using preg_split() like I first did, for such a situation, one would be better off using str_split() :

    $arr1 = str_split($textone);
    $arr2 = str_split($texttwo);
    


    2. Then, sort those array, so the letters are in alphabetical order :

    sort($arr1);
    sort($arr2);
    


    3. After that, implode the arrays, to create words where all letters are in alphabetical order :

    $text1Sorted = implode('', $arr1);
    $text2Sorted = implode('', $arr2);
    


    4. And, finally, compare those two words :

    if ($text1Sorted == $text2Sorted) {
        echo "$text1Sorted == $text2Sorted";
    }
    else {
        echo "$text1Sorted != $text2Sorted";
    }
    



    Turning this idea into a comparison function would give you the following portion of code :

    function compare($textone, $texttwo) {
        $arr1 = str_split($textone);
        $arr2 = str_split($texttwo);
    
        sort($arr1);
        sort($arr2);
    
        $text1Sorted = implode('', $arr1);
        $text2Sorted = implode('', $arr2);
    
        if ($text1Sorted == $text2Sorted) {
            echo "$text1Sorted == $text2Sorted<br />";
        }
        else {
            echo "$text1Sorted != $text2Sorted<br />";
        }
    }
    


    And calling that function on your two words :

    compare("pate", "tape");
    compare("pate", "tapp");
    

    Would get you the following result :

    aept == aept
    aept != appt
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型