如果在另一个数组中找到它,则删除它们的元素

Tow*_*wer 48 php arrays

可能重复:
如果项目存在于"不允许的单词"数组中,则从数组中删除该项

我有一个客户端将发送的动态字符串,我想从中创建逗号分隔的标签:

$subject = "Warmly little in before cousin as sussex and an entire set Blessing it ladyship.";
print_r($tags = explode(" ", strtolower($subject)));
Run Code Online (Sandbox Code Playgroud)

然而,我想删除一组特定的单词(例如定冠词),但是如果它在爆炸数组中,我想删除该单词的键和值:

$definite_articles = array('the','this','then','there','from','for','to','as','and','or','is','was','be','can','could','would','isn\'t','wasn\'t', 'until','should','give','has','have','are','some','it','in','if','so','of','on','at','an','who','what','when','where','why','we','been','maybe','further');
Run Code Online (Sandbox Code Playgroud)

如果$definite_article数组中的其中一个单词在数组中,则$tags删除该单词的键和值,新数组将取出这些单词.我将使用这个数组array_rand来从中选择一组随机的单词.我已经尝试了很多东西来实现我的结果,但到目前为止还没有.有人可以帮我找到解决方案吗?

Jon*_*Jon 73

您正在寻找array_diff:

$subject = "Warmly little in before cousin as sussex...";
$tags = explode(" ", strtolower($subject));

$definite_articles = array('the','this','then','there','from','for','to','as');

$tags = array_diff($tags, $definite_articles);
print_r($tags);
Run Code Online (Sandbox Code Playgroud)

看到它在行动.


Mad*_*iha 34

听起来很容易array_diff().

array array_diff ( array $array1 , array $array2 [, array $... ] )
Run Code Online (Sandbox Code Playgroud)

比较array1反对array2和收益之差.

这基本上意味着它将array1被剥夺所有存在的值后返回array2.

  • array_diff() 将保留 [of array1] 的原始数组键 - 只需将其包装在 array_values 中 - 这将重置新的数组键: 例如: $new_array=array_values(array_diff($array1, $array2)); (2认同)