猿问

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

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


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

但输出是打印 array1 中的所有元素


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


GCT1015
浏览 160回答 3
3回答

慕哥6287543

array_diff应该可以工作。<?php$array1 = array ("apple","banana","papaya","watermelon","avocado");$array2 = array ("apple","avocado");$array_diff = array_diff($array1, $array2);print_r($array_diff);?>演示输出将。Array ( [1] => banana [2] => papaya [3] => watermelon)您也可以尝试以下解决方案。结果将是相同的。. 使用in_array检查第一个数组值是否不在第二个测试器中,该值是否在新数组“final_result”中以获取结果。in_array 支持(PHP 4、PHP 5、PHP 7)$array1 = array ("apple","banana","papaya","watermelon","avocado");$array2 = array ("apple","avocado");$final_result = array();foreach($array1 as $value){&nbsp; &nbsp; if(!in_array($value, $array2)){&nbsp; &nbsp; &nbsp; &nbsp; $final_result[] = $value;&nbsp; &nbsp; }}print_r($final_result);?>

慕婉清6462132

在array_filter()的帮助下,我们可以轻松完成。它使用回调函数过滤数组的元素。array_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);
随时随地看视频慕课网APP
我要回答