2012-10-04 48 views
0

我想按前兩個字母列出單詞/組合單詞,但我無法理解它。我想我可以做一個substr()和循環檢查,但我不知道這是否是這樣做的方式。按前2個字母分組或列出單詞

喜歡的東西:

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

我想要實現: 詞得到由他們的首個字母,例如第一排序A,B,C等。在A頁面上,您可以看到按前兩個字母排序的詞語,例如, aa,ab,ac等。

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

幫助/想法讚賞!

+0

你做的是對的!當前兩個單詞中有一個單詞「aa」時,它會返回true並且是,$ word也會被打印出來。 –

+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>"; 
?> 
+0

謝謝,答案是正確的,但GolezTrol有點快:) –

+0

其實你的解決方案更符合我的需要。 –

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/>'; 
}