Php 如何删除数组中元素的数组

Php 如何删除数组中元素的数组,php,Php,我有两个数组。如果第一个数组中存在第二个数组,我想删除。比如说 array1 = array ("apple","banana","papaya","watermelon","avocado"); array2 = array ("apple","avocado"); 我希望输出应该是 Array ( [1] => banana [2] => papaya [3] => watermelon) 以下是我尝试过的一些代码 foreach($array2 as $key){

我有两个数组。如果第一个数组中存在第二个数组,我想删除。比如说

array1 = array ("apple","banana","papaya","watermelon","avocado");
array2 = array ("apple","avocado");
我希望输出应该是

Array ( [1] => banana [2] => papaya [3] => watermelon)
以下是我尝试过的一些代码

foreach($array2 as $key){
    $keyToDelete = array_search($key, $array1);
    unset($array1[$keyToDelete]);
}
print_r($array1);
但结果是

Array ( [1] => banana [2] => papaya [3] => watermelon [4] =>avocado )
它只删除第一个元素

我也试着做类似的事情

$result = array_diff($array1,$array2);
print_r($result);
但输出是打印阵列中的所有元素1

注意:我希望结果需要在foreach循环之外

应该工作

<?php

$array1 = array ("apple","banana","papaya","watermelon","avocado");
$array2 = array ("apple","avocado");

$array_diff = array_diff($array1, $array2);

print_r($array_diff);

?>
您也可以尝试以下解决方案。结果将是相同的。。使用Check if first array value not in the second tester检查新数组“final_result”中的值是否不在第二个测试仪中

$array1 = array ("apple","banana","papaya","watermelon","avocado");
$array2 = array ("apple","avocado");

$final_result = array();
foreach($array1 as $value){

    if(!in_array($value, $array2)){

        $final_result[] = $value;
    }

}

print_r($final_result);

?>
内置数组支持(PHP4、PHP5、PHP7)
$array1 = array ("apple","banana","papaya","watermelon","avocado");
$array2 = array ("apple","avocado");

$final_result = array();
foreach($array1 as $value){

    if(!in_array($value, $array2)){

        $final_result[] = $value;
    }

}

print_r($final_result);

?>
的帮助下,我们可以轻松地完成这项工作。它使用回调函数过滤数组的元素

$array1 = array ("apple","banana","papaya","watermelon","avocado");
$array2 = array ("apple","avocado");

$final_result = array();
foreach($array1 as $value){

    if(!in_array($value, $array2)){

        $final_result[] = $value;
    }

}

print_r($final_result);

?>
array\u filter()
迭代输入数组中的每个值,并将它们传递给回调函数。如果回调函数返回true,则输入的当前值将返回到结果数组中。保留数组键

这里我们使用
use($array2)
子句来访问回调函数中的外部变量
$array2
需要筛选出
$array1

$array1 = array("apple","banana","papaya","watermelon","avocado");
$array2 = array("apple","avocado");

$array1 = array_filter($array1, function($item) use($array2) { return !in_array($item, $array2); });

print '<pre>';
print_r($array1);
$array1=数组(“苹果”、“香蕉”、“木瓜”、“西瓜”、“鳄梨”);
$array2=数组(“苹果”、“鳄梨”);
$array1=array_filter($array1,函数($item)use($array2){return!in_数组($item,$array2);});
打印“”;
印刷品(1美元);

最快的方法是创建
$array2
中元素的
集合(关联数组)
,并迭代
$array1
,检查
$array1
中的元素是否存在于
集合中,或者不使用
isset()
。我们利用了称为的方法/算法技术

$array1 = array ("apple","banana","papaya","watermelon","avocado");
$array2 = array ("apple","avocado");

$final_result = array();
foreach($array1 as $value){

    if(!in_array($value, $array2)){

        $final_result[] = $value;
    }

}

print_r($final_result);

?>

谢谢你的建议。但这对我不起作用。在添加演示检查之前,我也尝试过这种方法。array_diff支持-(PHP4>=4.0.1,PHP5,PHP7)有什么方法可以代替array_diff吗?我的php版本不支持它。我又添加了一个解决方案,很高兴能帮助您:)有没有在php中使用哈希的教程?@daffodil我们在php中使用的关联数组本身就是哈希。