我有一个允许的信件清单
$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
有什么可能更简单?如果有人可以提供帮助,我将不胜感激。
我从您的涉及strcspn()
功能的代码开始,提出一种解决方案:
$letters = array();
$letter = 'BBB';
while ($letter !== 'ZZZ') {
$letter++;
if(strcspn($letter, "AEIOU") == 3 )
$letters[] = $letter;
}
print_r($letters);
提到的函数返回needle
参数中列出的字符的首次出现的索引。因此,在我们的情况下,[0-2]
如果存在任何字符,它将返回范围内的值。根据手册页,找不到needle
list中指定的任何字符,返回原始字符串的长度(在我们的方案中,该字符串始终等于3)。
这意味着要确保它返回3,我们只接受不包含禁止字符的字符串"AEIOU"
,并将它们附加到输出数组中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句