Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果存在,PHP将从另一个中删除数组项_Php_Arrays_Multidimensional Array_Array Difference - Fatal编程技术网

如果存在,PHP将从另一个中删除数组项

如果存在,PHP将从另一个中删除数组项,php,arrays,multidimensional-array,array-difference,Php,Arrays,Multidimensional Array,Array Difference,我有两个对象数组:数组A和数组B。如何检查数组A中是否存在数组B中的对象。如果存在,如何将其从数组A中删除 例如: Array A: [ {"id": 1, "name": "item1"}, {"id": 2, "name": "item2"}, {"id": 3, "name": "item3"}, {"id": 4, "name": "item4"} ] Array B [ {"id": 1, "n

我有两个对象数组:数组A和数组B。如何检查数组A中是否存在数组B中的对象。如果存在,如何将其从数组A中删除

例如:

Array A:
   [
       {"id": 1, "name": "item1"},
       {"id": 2, "name": "item2"},
       {"id": 3, "name": "item3"},
       {"id": 4, "name": "item4"}
   ]

Array B 
   [
       {"id": 1, "name": "item1"},
       {"id": 3, "name": "item3"}
   ]
移除阵列后,阵列应如下所示:

   [
       {"id": 2, "name": "item2"},
       {"id": 4, "name": "item4"}
   ]
您可以使用,也可以参考这些文章进行数组比较和分析


这里我们使用的是
array\u map
,它首先使用
json\u encode
array\u映射转换为字符串,然后我们为两个数组找到
array\u diff


array\u filter
可能会有所帮助

$a =  [
       ["id"=> 1, "name"=> "item1"],
       ["id"=> 2, "name"=> "item2"],
       ["id"=> 3, "name"=> "item3"],
       ["id"=> 4, "name"=> "item4"]
   ];


print_r(array_filter($a, function($e) { 
  return  !in_array($e, [["id"=> 1, "name"=> "item1"],["id"=> 3, "name"=> "item3"]]);
}));
/* =>
    Array

(
    [1] => Array
        (
            [id] => 2
            [name] => item2
        )

    [3] => Array
        (
            [id] => 4
            [name] => item4
        )

)  
 */


我做错了什么@这是我的错,我现在编辑它。并添加了演示,您现在可以查看它。谢谢你的评论。我还做错了什么@问题是数组,而不是对象的ojbect.array你可以使用我在任何地方看到的技巧-
$ArrayA=array\u map('serialize',$ArrayA)$ArrayB=数组映射('serialize',$ArrayB)$ArrayA=array_diff($ArrayA,$ArrayB)$ArrayA=数组映射('unserialize',$ArrayA);印刷费($ArrayA)我在这里找到了答案
<?php
ini_set('display_errors', 1);
$array1=
[
    (object) ["id"=> 1, "name"=> "item1"],
    (object) ["id"=> 2, "name"=> "item2"],
    (object) ["id"=> 3, "name"=> "item3"],
    (object) ["id"=> 4, "name"=> "item4"]
];
$array1=array_map(function($value){return json_encode($value);}, $array1);
$array2=
[
    (object) ["id"=> 1, "name"=> "item1"],
    (object) ["id"=> 3, "name"=> "item3"]
];
$array2=array_map(function($value){return json_encode($value);}, $array2);

$result=array_map(function($value){return json_decode($value);}, array_diff($array1, $array2));
print_r($result);
$a =  [
       ["id"=> 1, "name"=> "item1"],
       ["id"=> 2, "name"=> "item2"],
       ["id"=> 3, "name"=> "item3"],
       ["id"=> 4, "name"=> "item4"]
   ];


print_r(array_filter($a, function($e) { 
  return  !in_array($e, [["id"=> 1, "name"=> "item1"],["id"=> 3, "name"=> "item3"]]);
}));
/* =>
    Array

(
    [1] => Array
        (
            [id] => 2
            [name] => item2
        )

    [3] => Array
        (
            [id] => 4
            [name] => item4
        )

)  
 */