PHP:如何对字符串中的字符进行排序?

Jér*_*nge 18 php sorting string character

我有一组包含PHP脚本中字符的字符串,我需要在每个字符串中对这些字符进行排序.

例如:

"bac" -> "abc"
"abc" -> "abc"
"" -> ""
"poeh" -> "ehop"
Run Code Online (Sandbox Code Playgroud)

这些字符没有重音,都是小写.我怎么能在PHP中执行此操作?

Mik*_*e B 41

我会使它成为一个数组并使用sort函数:

$string = 'bac';

$stringParts = str_split($string);
sort($stringParts);
echo implode('', $stringParts); // abc
Run Code Online (Sandbox Code Playgroud)

  • @FrancoisDeschenes非常正确,但imho对`implode()的定义令人抓狂.非常不同的参数的可互换顺序似乎是PHP想要忘记的那些奇怪之处,但不能b/c向后兼容. (3认同)

Jam*_*iro 5

使用sort时,它必须是小写文本.我有大写字符串导致我的极端字符串重站点上的许多问题asort()和sort()不知道这个;).我使用以下函数来快速编写脚本.注意allChars函数的"strtolower".然后,您可以稍后使用小写操作.或者,处理大写和小写的其他字符串顺序是natcasesort().处理正确(自然)排序的Natcasesort - 就像我们在纸上订购东西一样.您可以提供一个数组,并使用foreach来分隔每个单词.或者,使用它是创建处理数组的函数的基础.您可以使用implode('',$ letters)而不是foreach语句 - 但是如果需要,此函数允许您更改字母 - 只需在foreach中执行此操作即可.在有人喜欢的情况下,还添加了内爆功能.

仅限小写

function allChars($w){
    $letters = str_split(strtolower($w)); sort($letters);
    $ret = "";
    foreach($letters as $letter){
        $ret .= $letter;
    }
    return $ret;
}
Run Code Online (Sandbox Code Playgroud)

仅使用Implode小写

function implodeAllChars($w){
    $letters = str_split(strtolower($w)); sort($letters);
    return implode('',$letters);
}
Run Code Online (Sandbox Code Playgroud)

自然排序功能

function allCharsNat($w){
    $letters = str_split($w); natcasesort($letters);
    $ret = "";
    foreach($letters as $letter){
        $ret .= $letter;
    }
    return $ret;
}
Run Code Online (Sandbox Code Playgroud)

内爆自然订购

function allCharsNatImplode($w){
    $letters = str_split($w); natcasesort($letters);
    return implode('',$letters);
}
Run Code Online (Sandbox Code Playgroud)

它快速而简单.