Как проверить, содержат ли две строки одинаковые буквы? - PullRequest
3 голосов
/ 24 июля 2011
$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";
}

Какое if заявление я ищу?

Ответы [ 2 ]

11 голосов
/ 24 июля 2011

Я полагаю, что решение может быть, учитывая две следующие переменные:

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


1. Сначала разбейте строки, чтобы получить два массива букв:

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

Обратите внимание, что, как указал @Mike в своем комментарии, вместо использования preg_split(), как я это сделал в первый раз, для такой ситуации было бы лучше использовать str_split() :

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


2. Затем отсортируйте этот массив, чтобы буквы были в алфавитном порядке:

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


3. После этого взорвите массивы, чтобы создать слов , где все буквы расположены в алфавитном порядке:

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


4. И, наконец, сравните эти два слова :

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



Превращение этой идеи в функцию сравнения даст вам следующую часть кода:

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 />";
    }
}


И вызов этой функции для ваших двух слов :

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

Получит ли вы следующий результат:

aept == aept
aept != appt
0 голосов
/ 24 июля 2011

используйте === и !==

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

или

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

if ($textone !== $texttwo) {
    echo "The two strings NOT contain the same letters";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...