2016-08-15 24 views
-1

根据用户输入,我有一个数组可以不断变化。它接收用户输入的单词,然后将其分成array_unique,它具有所有可能的字母组合。然后我使用usort函数按照字母顺序将数组从最小到最大排序。从PHP中删除单个字符值和所有辅音值来自PHP

我需要能够从数组中删除任何1个字符的值,以及任何如“lp”,“lpp”,“pp”,“ds”的辅音。

array('d','e','p','r','s','y','de','dp','dr','ds','dy','ep','er','es','ey','pr','ps', 
     'py','rs','ry','sy','dep','der','des','dey','dpr','dps','dpy','drs','dry','dsy', 
     'epr','eps','epy','ers','ery','esy','prs','pry','psy','rsy','depr','deps','depy', 
     'ders','dery','desy','dprs','dpry','dpsy','drsy','eprs','epry','epsy','ersy','prsy', 
     'deprs','depry','depsy','dersy','dprsy','eprsy','deprsy'); 

上面是如果用户放入“spyder”,我会有一个数组的例子。我需要能够在开始时删除单个字符的结果,并且我需要能够删除完全由所有辅音完成的任何值。为了这个应用,我不把“Y”作为一个辅音,并将它与其他元音A,E,I,O,U分组。

那么理想,我的数组应该是这样的:

array('de','dy','ep','er','es','ey','py','ry','sy','dep','der','des','dey','dpy','dry', 
     'dsy','epr','eps','epy','ers','ery','esy','pry','psy','rsy','depr','deps','depy', 
     'ders','dery','desy','dpry','dpsy','drsy','eprs','epry','epsy','ersy','prsy', 
     'deprs','depry','depsy','dersy','dprsy','eprsy','deprsy'); 
+0

你为什么不展示你的尝试?看起来你只是想让其他人为你做功课。 – dave

回答

1

您可以使用array_filter在每个项目两个条件。首先,使用strlen,然后使用trim所有来自该物品的辅音,检查物品的长度是否不等于1,并查看是否还有剩余物品。

$result = array_filter($your_array, function($x) { 
    return strlen($x) != 1 && trim($x, 'bcdfghjklmnpqrstvwxz'); 
}); 
+0

不知道如果我正确实施这个,因为我有问题:<? $ anagram = array(“red”,“blue”,“a”,“ppp”); $ result = array_filter($ anagram,function($ x){0}返回strlen($ x)!= 1 && trim($ x,'bcdfghjklmnpqrstvwxz'); }); print_r($ result); ?> – demonic

+0

看起来不错。 '$ result'应该是'['red','blue']'。 –