为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
GCT1015 2021-10-22 13:04:37
我有两个数组。如果第一个数组中存在第二个数组,我想删除。例如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 循环之外
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

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


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


        $final_result[] = $value;

    }


}


print_r($final_result);


?>


查看完整回答
反对 回复 2021-10-22
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

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


查看完整回答
反对 回复 2021-10-22
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信