比较两个数组 - 删除匹配值

时间:2013-12-11 18:51:34

标签: php arrays

我需要在$array_2中搜索json_encode()的{​​{1}} d值。

如果$array_1中的item_id$array_1item_id字段中的some_field不匹配,那么我需要该数组索引,以便我可以将其插入数据库。

我尝试使用$array_2,但这不起作用,因为数组有不同的键。 同样in_array()也不起作用,因为数组索引没有关系。

$ array_1:

array_diff()

$ array_2;

Array
(
    [0] => Array
        (
            [id] => 34
            [item_id] => sfg4et4
        )

    [1] => Array
        (
            [id] => 472
            [item_id] => adadgt4
        )
)

1 个答案:

答案 0 :(得分:2)

在我看来,第一步是将$array_2置于可用的表格中。为此,我建议使用array_walk()将此数组重写为仅数字索引的item_id值数组。

$array_2 = [...];

array_walk($array_2, function(&$value, $index_not_used) {
    $some_field = json_decode($value['some_field']);
    // overwrite value
    $value = $some_field->item_id;
});

$array_2现在是一个类似['mlkjm980','fsff5ssa', ...]

的数组

现在,您可以使用此修改过的array_filter()数组将$array_1应用于$array_2

$filtered_array = array_filter($array_1, function ($value) use ($array_2) {
    $item_is_in_array_2 = in_array($value['item_id'], $array_2);
    return !$item_is_in_array_2; // return negation of value as we want to filter out cases where item_id is in $array_2
});