方法:
1.按以下方式将元素转换为字符串:
array(2) {
[0] =>
string(32) "{"name":"col1","type":"varchar"}"
[1] =>
string(28) "{"name":"col2","type":"int"}"
}
array(3) {
[0] =>
string(32) "{"name":"col1","type":"varchar"}"
[1] =>
string(28) "{"name":"col2","type":"int"}"
[2] =>
string(29) "{"name":"col3","type":"date"}"
}
array(2) {
[0] =>
string(32) "{"name":"col1","type":"varchar"}"
[1] =>
string(28) "{"name":"col3","type":"int"}"
}
2.使用数组交集函数查找共同元素。
3.将结果转换回数组。
$arr1 = [
["name"=>"col1", "type"=>"varchar"],
["name"=>"col2", "type"=>"int"]
];
$arr2 = [
["name"=>"col1", "type"=>"varchar"],
["name"=>"col2", "type"=>"int"] ,
["name"=>"col3", "type"=>"date"]
];
$arr3 = [
["name"=>"col1", "type"=>"varchar"],
["name"=>"col3", "type"=>"int"]
];
list($darr1, $darr2, $darr3) = convertArrToStr($arr1, $arr2, $arr3);
var_dump(duplicates($darr1, $darr2, $darr3));
function convertArrToStr() {
$args = func_get_args();
foreach($args as &$arg){
foreach($arg as $k => $arr) {
$arg[$k] = json_encode($arr, true);
}
}
return $args;
}
function duplicates($darr1, $darr2, $darr3) {
$intersects = array_intersect($darr1, $darr2, $darr3);
$r = [];
foreach($intersects as $v) {
$r[] = json_decode($v, true);
}
return $r;
}
希望这可以帮助您编写更优雅的解决方案。