updated question with array structure and result expectation
$arr1=array(
'string',
'string 1',
'string 2',
'return this'
);
$arr2=array(
'string'
);
我想最终得到这个:
array(1) { [1]=> string(11) "return this" }
我尝试了array_diff
。
array_diff($arr1,$arr2);
然后它返回:
array(3) { [1]=> string(8) "string 1" [2]=> string(8) "string 2" [3]=> string(11) "return this" }
this works
我确信有更优雅的解决方案,但这就是我现在所做的工作。
$list=array(
'return this',
'do not return this string',
'string'
);
$exceptions=array(
'string'
);
foreach($list as $key=>$value) {
foreach($exceptions as $e) {
if(strpos($value,$e) !== false ) unset($list[$key]);
}
}
结果:
array(1) { [0]=> string(11) "return this" }
答案 0 :(得分:2)
查看您的编辑后,您可能需要array_filter
$filteredArray = array_filter($list,function($arrayElement){
return !in_array($arrayElement,$my_exceptions);
});
array_filter接受一个数组和一个回调函数。在回调函数中,您将传递一个数组元素。然后回调需要返回true或false,返回true会将当前数组元素传递给已过滤的数组,返回false会将其保留。
由于您要检查$list
中的任何数组元素是否在$my_exceptions
中,您是否使用in_array
检查它是否在数组中,如果它在数组中返回false,以便过滤掉。
虽然在这种情况下array_diff
应该做同样的事情
$arr1 = array(1,2,3,4);
$arr2 = array(1,2,3);
$result = array_diff($arr1, $arr2);
$result
这里将是一个包含单个元素的数组4
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个
<?php
$arr1 = array(10, 20, 30);
$arr2 = array(5, 20, 30, 40);
foreach($arr2 as $chk_arr){
if(!in_array($chk_arr, $arr1)) {
$arr3[] = $chk_arr;
}
}
print_r($arr3);