我只想从一个数组中得到一个单词列表,这个数组有多于和少于3个元音,但是单独的,我怎么能只用for循环来做呢?
$name = array('jake', 'rita', 'ali', 'addert', 'siryteee', 'skeueei', 'wsewwauie', 'aaaaweefio');
$vowels = array('a', 'e', 'i', 'o', 'u');
$massiv = [ ];
$vowel = [ ];
for ($i = 0; $i < count($name); $i++) {
$massiv[ ] = $name[$i];
for ($j = 0; $j < count($vowels); $j++) {
$vowel[ ] = $vowels[$j];
}
}
1条答案
按热度按时间u91tlkcl1#
使用妊娠Grep:
产出
Sandbox
正则表达式非常简单
将任何内容与以下
a|e|i|o|u
的任意组合中的至少3个匹配。(..)
是捕获组,|
是或,{3}
匹配3次。您可以使用{3,}
3或更多,但在这种情况下这并不重要,因为只要您有3个,您就可以完全查找。\i
标志使其不区分大小写。只要每个数组项都是一个单词,这就可以很好地工作,如果有多个单词,则很难找到匹配项。
仅用于循环
我来帮你个忙
Sandbox
最重要的是
整数子字符串计数(字符串**$干草堆**,字符串**$针**[,整数**$偏移量**= 0 [,整数**$长度**]])
**substr_count()**返回needle子字符串在haystack字符串中出现的次数。请注意needle区分大小写。
http://php.net/manual/en/function.substr-count.php
与第一个相同的输出。然而,Preg Grep的好处(除了不区分大小写之外)是它保留了数组键,您可以在添加匹配项时添加
$i
索引,从而在for each循环中复制这一点:这会使匹配项与原始数组保持关联,这在某些情况下可能很有用。
如果你不想区分大小写,最简单的方法就是把单词小写。在一些极端的情况下,这是行不通的,但对于大多数英语单词来说,这应该是可以的。
我还应该提到,从性能的Angular 来看,在for循环(condition)之外计数通常更好。
夏日
所以把所有这些放在一起
您将得到大约12行代码,这些代码相当于一个
preg_grep
调用。"最后一件事"
你的代码只是把单词和元音转移到另一个数组中,只不过你会得到
words*vowels
个元音,因为对于外层for循环的每一个循环(绑定到单词),你会对所有元音做一个完整的循环。无论如何享受!