我有一個允許的字母列表$allowedLetters = array('B','C','D','F','G','H','J','K','L','M','N','P','R','S','T','V','W','X','Y','Z');從那個數(shù)組我想做字符串增量以獲得以下模式:BBB, BBC, BBD ... until ZZZ我知道我可以像這樣簡單地進行字符串遞增:$letters = array();$letter = 'BBB';while ($letter !== 'ZZZ') { $letters[] = $letter++; }print_r($letters);但它不會匹配我的允許字母列表,我只是找不到一種方法如何使用允許列表進行增量或只是排除我不想要的字母,例如:A,E,I,O,Q,U還有什么比這更簡單的呢?如果有人可以提供幫助,我將不勝感激。
1 回答

守著一只汪
TA貢獻1872條經(jīng)驗 獲得超4個贊
我提出了一個解決方案,從您涉及strcspn()
功能的代碼開始:
$letters = array();
$letter = 'BBB';
while ($letter !== 'ZZZ') {
? ? $letter++;??
? ? if(strcspn($letter, "AEIOU") == 3 )? ? ? ?
? ? ? ? $letters[] = $letter;? ??
}
print_r($letters);
上述函數(shù)返回參數(shù)中列出的字符第一次出現(xiàn)的索引needle。[0-2]因此,在我們的例子中,如果存在任何字符,它將返回范圍內(nèi)的值。needle根據(jù)手冊頁,沒有找到列表中指定的任何一個字符,返回原始字符串的長度(在我們的場景中它總是等于 3)。
這意味著確保它返回 3 我們只接受不包含禁止字符的字符串"AEIOU",并將它們附加到我們的輸出數(shù)組。
- 1 回答
- 0 關(guān)注
- 139 瀏覽
添加回答
舉報
0/150
提交
取消