我现在有两个PHP数组:
array('a','c','r','r')
array('carr','car','arc','ra','c','abc','do','aa','rr')
我想要的结果是:array('carr','car','arc','ra','c','rr')
即,过滤掉'abc'、'do'、'aa',因为我希望过滤掉以下单词:
1.不包含a
、c
或r
1.包含的a
、c
或r
比我在array 1中的要多/多。
我试过array_filter()
,但我似乎不能使它工作。
2条答案
按热度按时间ioekq8ef1#
一种方法是:
使用
array_count_values
计算每个字母在第一个数组中出现的次数。然后在array_filter回调函数中,将每个单词拆分为单个字母,并计算每个字母出现的次数。然后循环遍历这些已计数的字母。如果当前字母没有出现在letter-count-array中,或者其计数大于letter-count-array中的计数,则返回false。
lrl1mhuk2#
当您替换单词数组时,您可以替换字母数组并进行单字母替换。如果单词中的所有字母都被消耗,则单词被保存。
正则表达式实际上并不是必需的,因为字母是文字,但是
preg_replace()
提供了一个限制参数,而str_replace()
没有。代码:(Demo)
以上事实可以归结为:(Demo)