-4

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" }
4

3 回答 3

2

查看您的编辑后,您可能需要array_filter

$filteredArray = array_filter($list,function($arrayElement){
                     return !in_array($arrayElement,$my_exceptions);
                 });

array_filter 接受一个数组和一个回调函数。在回调函数中,您将获得数组元素之一。然后回调需要返回true或false,return true会将当前数组元素传递到过滤后的数组中,return 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

于 2013-10-05T08:23:55.990 回答
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);
于 2013-10-05T08:26:54.337 回答
0

试试array_diff喜欢

array_diff($arr1 , $arr2);

看到这个链接

于 2013-10-05T08:24:21.700 回答