按前2个字母分组或列出单词

时间:2012-10-04 08:46:34

标签: php substr

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

类似的东西:

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

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

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

帮助/想法赞赏!

2 个答案:

答案 0 :(得分: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>";
?>

答案 1 :(得分: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/>';
}