0

最初の 2 文字で単語をリスト/グループ化したいのですが、頭がわかりません。substr() を実行してループ中にチェックできると思いますが、これがその方法であるかどうかはわかりません。

何かのようなもの:

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

私が達成しようとしていること: 単語は最初に A、B、C などの最初の文字でソートされます。A ページでは、aa、ab、ac などの最初の 2 文字でソートされた単語があります。

この例はhttp://www.urbandictionary.com/browse.php?word=aaです。彼らはまさに私が求めていることをします。

助けて/考えていただければ幸いです!

4

2 に答える 2

1

たくさんの単語がある場合は、それらを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

最初の文字だけでなく、単語全体、または少なくとも最初の2文字で並べ替えます。

次に、実際に使用substrして、最初の単語の最初の2文字を取得できます。次に、ループに入り、ループ内の単語の最初の2文字を、前に取得した2文字で確認できます。

それらが異なる場合は、新しいグループを取得したことがわかります。グループヘッダーをエコーし​​、新しい文字を保存して、次の反復で比較することができます。

// 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 に答える