Php 如何从数组中删除特定值的多个实例

Php 如何从数组中删除特定值的多个实例,php,Php,我试图从数组中取消设置特定值的每个实例,但是我只能取消设置该值的第一个实例。如果值等于我正在搜索的值,我如何删除所有内容 $toRemove = array("red","blue"); $myArray = array("red", "green", "blue", "blue", "blue", "purple", "yellow"); foreach ($toRemove as $remove) { if (($key = array_search($remove, $myArr

我试图从数组中取消设置特定值的每个实例,但是我只能取消设置该值的第一个实例。如果值等于我正在搜索的值,我如何删除所有内容

$toRemove = array("red","blue");
$myArray = array("red", "green", "blue", "blue", "blue", "purple", "yellow");

foreach ($toRemove as $remove)
{
    if (($key = array_search($remove, $myArray)) !== false)
    {
        unset($myArray[$key];
    }
}
print_r($myArray);
以上仅将其作为我的数组值返回:

array("green", "blue", "blue", "purple", "yellow");

只需计算差异:

$myArray = array_diff($myArray, $toRemove);
但是,当前代码只返回一个键,因此需要搜索更多。您可以在以下情况下使用

foreach ($toRemove as $remove)
{
    while (($key = array_search($remove, $myArray)) !== false)
    {
        unset($myArray[$key]);
    }
}
或者获取所有键并循环它们:

foreach ($toRemove as $remove)
{
    foreach (array_keys($myArray, $remove) as $key)
    {
        unset($myArray[$key]);
    }
}

看。由于某种原因,我觉得我无法使用array_diff更新我的原始数组。这可以满足我的需要,在允许的情况下将向上投票。感谢为您当前的代码添加修复程序。