考虑到以下两个变量,我想一个解决方案可能是:
$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 />";
}
}
并在你的两个 words 上调用该函数:
compare("pate", "tape");
compare("pate", "tapp");
会得到以下结果:
aept == aept
aept != appt