Meek
Meek

Reputation: 3348

Remove value from array - by value

I have an array of keys and values (words and their occurrences). I would like to remove certain keys (words). I have those words in another array. How do I filter out those word and create a new array?

I have tried this - but it doesn't remove the strings:

<?php
$words = array(
    'string 1' => 4,
    'string 2' => 6,
    'string 3' => 3,
    'string 4' => 3,
    'string 4' => 9,
    'string 5' => 8,
    'string 6' => 2,
    'string 7' => 10,
    'string 8' => 1
);

$remove_words = array(
    'string 4',
    'string 2'
);

$new_array = array_diff($words, $remove_words);

print_r($new_array);
?>

I would expect an output like this:

$new_array = array(
    'string 1' => 4,
    'string 3' => 3,
    'string 5' => 8,
    'string 6' => 2,
    'string 7' => 10,
    'string 8' => 1
);

Upvotes: 2

Views: 43

Answers (1)

Madhur Bhaiya
Madhur Bhaiya

Reputation: 28834

You can use array_flip() to change $remove_words values to keys, and then use array_diff_key(). Try:

$new_array = array_diff_key($words, array_flip($remove_words));

Upvotes: 3

Related Questions