php – 合并和区分数组数组以查找常用值
发布时间:2020-12-13 13:23:43 所属栏目:PHP教程 来源:网络整理
导读:我试图循环几个数据库表结构并确定公共结构(即哪些列是相同的).最终结构应该只显示公共列,因此如果任何表具有唯一列,则它不应该在最终数组中. 这是三个表结构可能看起来像的示例. $arr1 = [ ["name"="col1","type"="varchar"],["name"="col2","type"="int"]
我试图循环几个数据库表结构并确定公共结构(即哪些列是相同的).最终结构应该只显示公共列,因此如果任何表具有唯一列,则它不应该在最终数组中.
这是三个表结构可能看起来像的示例. $arr1 = [ ["name"=>"col1","type"=>"varchar"],["name"=>"col2","type"=>"int"] ]; $arr2 = [ ["name"=>"col1","type"=>"int"],["name"=>"col3","type"=>"date"] ]; $arr3 = [ ["name"=>"col1","type"=>"int"] ]; $arrays = [$arr1,$arr2,$arr3]; 使用array_merge,array_diff,array_intersect或循环,是否可以确定哪些列对所有表都是通用的? 最终值应该是
您可以将自定义比较方法与
array_uintersect() 一起使用:
$arr1 = [ ["name" => "col1","type" => "varchar"],["name" => "col2","type" => "int"] ]; $arr2 = [ ["name" => "col1","type" => "int"],["name" => "col3","type" => "date"] ]; $arr3 = [ ["name" => "col1","type" => "int"] ]; $common_columns = array_uintersect($arr1,$arr3,'compareDeepValue'); print_r($common_columns); function compareDeepValue($val1,$val2) { return (strcasecmp(serialize($val1),serialize($val2))) ; } 将输出: Array ( [0] => Array ( [name] => col1 [type] => varchar ) ) 注意: @Abracadaver提出了一个很好的观点,只有当数组约定的顺序相同时,此方法才能正常工作. 比你可以用例如: function compareDeepValue($val1,$val2) { return ($val1['name'] === $val2['name'] && $val1['type'] === $val2['type']) ? 0 : -1; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |