Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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-diffing嵌套数组_Php_Multidimensional Array_Diff - Fatal编程技术网

php-diffing嵌套数组

php-diffing嵌套数组,php,multidimensional-array,diff,Php,Multidimensional Array,Diff,我有两个多维数组: $first_array = array( 0 => array(tid => 141), 1 => array(tid => 142), 2 => array(tid => 128) ); $second_array = array( 0 => array(tid => 141), 1 => array(tid => 128) ); 我需要检查第二个数组中是否有任何项存在于第一个数组中

我有两个多维数组:

$first_array = array(
  0 => array(tid => 141), 
  1 => array(tid => 142), 
  2 => array(tid => 128)
);

$second_array = array(
  0 => array(tid => 141), 
  1 => array(tid => 128)
);
我需要检查第二个数组中是否有任何项存在于第一个数组中。如果有,我需要从第一个数组中删除它们

以上面的示例为例,
$first\u array
应该以
array(0=>array(tid=>142))

有什么建议吗

编辑:以下是我使用的:

$first_array = array(
  0 => array('tid' => 141), 
  1 => array('tid' => 142), 
  2 => array('tid' => 128)
);

$second_array = array(
  0 => array('tid' => 141), 
  1 => array('tid' => 128)
);


function my_serialize(&$arr,$pos){ 
  $arr = serialize($arr); 
} 

function my_unserialize(&$arr,$pos){ 
  $arr = unserialize($arr); 
} 

 //make a copy 
$first_array_s = $first_array; 
$second_array_s = $second_array; 

// serialize all sub-arrays 
array_walk($first_array_s,'my_serialize'); 
array_walk($second_array_s,'my_serialize'); 

// array_diff the serialized versions 
$diff = array_diff($first_array_s,$second_array_s); 

// unserialize the result 
array_walk($diff,'my_unserialize'); 

print_r($diff); 

实现这一点的有效方法是按tid[O(logN)+O(logK)]对它们进行排序,并在foreach中进行比较。[O(max(N,K))]检查关于有几个助手函数的注释…太棒了!我能够使用一个序列化和非序列化数组并使用数组_diff的示例。谢谢powtac!