-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 は、配列とコールバック関数を取ります。コールバック関数では、配列要素の 1 つが渡されます。次に、コールバックは 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 に答える