Remove elements of one array if it is found in ano

2020-02-20 05:47发布

问题:

This question already has answers here:
Closed 7 years ago.

Possible Duplicate:
Remove item from array if it exists in a 'disallowed words' array

I have a dynamic string that clients will send and I want to create comma delimited tags from it:

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

And yet, I want to delete a specific group of words (such as definite articles), but I want to delete the key and value of that word if it is in the exploded array:

$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');

If one of these words in the $definite_article array are in the $tags array delete the key and value of that word and the new array will have these words taken out. I will have this array be used by array_rand to have a random group of words chosen out of it. I've tried many things to achieve my result, but nothing so far. Can someone help me find a resolve to this?

回答1:

You are looking for 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);

See it in action.



回答2:

Sounds like an easy job for array_diff().

array array_diff ( array $array1 , array $array2 [, array $... ] )

Compares array1 against array2 and returns the difference.

Which basically means it will return array1 after it's been stripped of all values which exist in array2.