0

我想按前两个字母列出/分组单词,但我无法理解它。我想我可以做一个 substr() 并在循环时检查,但我不确定这是否是这样做的方法。

就像是:

if (substr($word, 0, 2) == 'aa') {
 echo $word;
}

我想要实现的目标:单词首先按其起始字母排序,例如 A、B、C 等。在 A 页面上,您的单词按前 2 个字母排序,例如 aa、ab、ac 等。

一个例子是http://www.urbandictionary.com/browse.php?word=aa。他们做的正是我所追求的。

帮助/想法表示赞赏!

4

2 回答 2

1

如果你有一堆单词,把它们放在一个数组中。

例如:

<?php
$myWords = array ("hello", "hell", "ape", "word", "appel");
$myGroupedArr = array();
foreach ($myWords as $oneWord){
  $firstTwo = substr($oneWord,0,2);
  $myGroupedArr[$firstTwo][] = $oneWord;  
}
echo "<pre>";
print_r($myGroupedArr);
echo "</pre>";
?>
于 2012-10-04T08:52:24.250 回答
0

我不仅会按第一个字母排序,还会按整个单词排序,或者至少按前两个字母排序。

然后,您确实可以使用substr来获取第一个单词的前两个字母。然后您可以进入循环,并检查循环中单词的前两个字母,以及您之前得到的两个字母。

如果他们不同,你知道你有一个新的组。您可以回显组标题并将新的字母存储起来以在以下迭代中进行比较。

// Words in a sorted array.
$words = array( ...... );
asort($words);

$currentGroup = '';
foreach ($words as $word)
{
    $newGroup = substr($word, 0, 2);

    if ($newGroup !== $currentGroup)
    {
        // A new group is starting.
        echo "=== $newGroup ===<br/>";
        $currentGroup = $newGroup;
    }

    echo $word . '<br/>';
}
于 2012-10-04T08:52:34.050 回答