Reputation: 11829
I have an array of words and an array of stopwords. I want to remove those words from the array of words that are in the stopwords array, but the code returns all words:
function stopwords($x){
return !preg_match("/^(.|a|car|red|the|this|at|in|or|of|is|for|to)$/",$x);
};
$filteredArray = array_filter($wordArray, "stopwords");
Why?
Upvotes: 0
Views: 123
Reputation: 75
Try this..
$words = array('apple','boll','cat','dog','elephant','got');
$stopwords = array('cat','apple');
foreach($words as $k=>$v)
{
if(in_array($v,$stopwords)){
unset($words[$k]);
}
}
print_r($words);
Upvotes: 0
Reputation: 1139
// Should be an Array
$wordArray = array('he', 'is', 'going', 'to', 'bed' );// Should return boolean
function stopwords ($x)
{
return !preg_match("/^(.|a|car|red|the|this|at|in|or|of|is|for|to)$/",$x);
}
//filter array
$filter = array_filter($wordArray, "stopwords");
// Output
echo "< pre>";
print_r($filter);
// Result
Array
(
[0] => he
[2] => going
[4] => bed
)
Upvotes: 0
Reputation: 35139
$wordArray = ["hello","red","world","is"];
function stopwords($x){
return !preg_match("/^(.|a|car|red|the|this|at|in|or|of|is|for|to)$/",$x);
};
$filteredArray = array_filter($wordArray, "stopwords");
var_dump($filteredArray);
# results out:
array(2) {
[0] => string(5) "hello"
[2] => string(5) "world"
}
What do you think it was going to return?
Is your input '$wordArray' a string, or an array?
Upvotes: 1