0

比如我们有下面的单词:hey, hello, wrong

$unsorted = array("eyh", "lhleo", "nrwgo");

我知道我可以使用 asort 按字母顺序对数组进行排序,但我不希望这样。我希望获取数组的元素并对它们进行排序,这样它就会变成这样:

$sorted = array("ehy", "ehllo", "gnorw"); // each word in the array sorted

嘿排序= ehy

你好排序= ehllo

排序错误 = gnorw

据我所知,函数 sort 仅适用于数组,因此如果您尝试使用 sort 对单词进行排序,则会产生错误。如果我不得不假设,我可能需要使用 foreach 以及 strlen 和 for 语句或类似的东西,但我不确定。

提前致谢!

4

3 回答 3

1
function sort_each($arr) {
    foreach ($arr as &$string) {
        $stringParts = str_split($string);
        sort($stringParts);
        $string = implode('', $stringParts);
    }
    return $arr;
}

$unsorted = array("eyh", "lhleo", "nrwgo");
$sorted = sort_each($unsorted);
print_r($sorted); // returns Array ( [0] => ehy [1] => ehllo [2] => gnorw )
于 2013-07-23T07:01:20.417 回答
1
$myArray = array("eyh", "lhleo", "nrwgo");
array_walk(
     $myArray,
     function (&$value) {
         $value = str_split($value);
         sort($value);
         $value = implode($value);
     }
);
print_r($myArray);
于 2013-07-23T06:58:28.130 回答
0

尝试这个

$unsorted = array("eyh", "lhleo", "nrwgo");
$sorted = array();
foreach ($unsorted as $value) {
$stringParts = str_split($value);
sort($stringParts);
$sortedString =  implode('', $stringParts);
array_push($sorted, $sortedString);
}
print_r($sorted);
于 2013-07-23T07:02:38.823 回答