猿问

从给定的字母数组中增加字符串或使用 PHP 从增量中排除特定字母

我有一个允许的字母列表


$allowedLetters = array('B','C','D','F','G','H','J','K','L','M','N','P','R','S','T','V','W','X','Y','Z');

从那个数组我想做字符串增量以获得以下模式:


BBB, BBC, BBD ... until ZZZ

我知道我可以像这样简单地进行字符串递增:


$letters = array();

$letter = 'BBB';

while ($letter !== 'ZZZ') {    

    $letters[] = $letter++;    

}


print_r($letters);

但它不会匹配我的允许字母列表,我只是找不到一种方法如何使用允许列表进行增量或只是排除我不想要的字母,例如:


A,E,I,O,Q,U

还有什么比这更简单的呢?如果有人可以提供帮助,我将不胜感激。


暮色呼如
浏览 119回答 1
1回答

守着一只汪

我提出了一个解决方案,从您涉及strcspn()功能的代码开始:$letters = array();$letter = 'BBB';while ($letter !== 'ZZZ') {    $letter++;      if(strcspn($letter, "AEIOU") == 3 )               $letters[] = $letter;    }print_r($letters);上述函数返回参数中列出的字符第一次出现的索引needle。[0-2]因此,在我们的例子中,如果存在任何字符,它将返回范围内的值。needle根据手册页,没有找到列表中指定的任何一个字符,返回原始字符串的长度(在我们的场景中它总是等于 3)。这意味着确保它返回 3 我们只接受不包含禁止字符的字符串"AEIOU",并将它们附加到我们的输出数组。
随时随地看视频慕课网APP
我要回答