PHP |如果该值存在于其他数组中,则在数组内部取消设置数组

时间:2014-12-20 10:21:09

标签: php arrays

我有两个阵列。

数组1:

Array
(
    [0] => Array
        (
            [employee_id] => 1
        )

    [1] => Array
        (
            [employee_id] => 2
        )

)

数组2:

Array
(
    [0] => Array
        (
            [employee_id] => 2
        )

)

我想要的是,如果存在Array 1值存在于Array 2中,则取消设置Array 1

中的数组

在数组1的上述示例中,应该取消设置employee_id = 2的数组。因为它存在于数组2中

和结果我会像

Array
(
    [0] => Array
        (
            [employee_id] => 1
        )
)

2 个答案:

答案 0 :(得分:1)

使用此解决方案,您可以获得存储在$arr1$arr2中的所有值,但是如果它们仅存在于$arr1中。

$arr1 = array( 
           array('employee_id' => 1), 
           array('employee_id' => 3), 
           array('employee_id' => 2),
        );
$arr2 = array(
           array('employee_id' => 1),
           array('employee_id' => 2),
           array('employee_id' => 4),
        );  

$arr1 = array_intersect($arr1, $arr2);

print_r($arr1);

输出

Array
(
    [0] => Array
        (
            [employee_id] => 1
        )

    [1] => Array
        (
            [employee_id] => 3
        )

    [2] => Array
        (
            [employee_id] => 2
        )

)

答案 1 :(得分:0)

试试这个:( $ arr1只保留$ arr2里面的东西)

$arr1 = array(
    array(
        'employee_id' => 1
    ),
    array(
        'employee_id' => 2
    )
);

$arr2 = array(
    array(
        'employee_id' => 2
    )
);

for($i = 0; $i < count($arr2); $i++) {
    $employee_id = $arr2[$i]['employee_id'];

    for($j = 0; $j < count($arr1); $j++) {
        if($arr1[$j]['employee_id'] == $employee_id) {
            unset($arr1[$j]);
            break;
        }
    }
}

var_dump($arr1); // outputs: array(1) { [0]=> array(1) { ["employee_id"]=> int(1) } }