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中使用的关联数组本身就是哈希。