我需要在$array_2
中搜索json_encode()
的{{1}} d值。
如果$array_1
中的item_id
与$array_1
中item_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
)
)
答案 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
});