找出关联数组的交集和差异。示例图片array_diff函数官方文档截图:https://www.php.net/manual/zh...有时候在业务逻辑中,我们需要获取两个数组的差值,本意我是想获取差值集,即图中A-B部分=a+b,不包括c部分。PHP内置函数首先想到的是array_diff()函数,但是array_diff()函数传递的参数中第一个array1是用于比较数据的引用,返回的数据是array1中的值那是其他数组中没有的,显然这不符合我们的预期。我们可以根据文档测试array_diff()函数返回差异。示例代码"green","b"=>"red","c"=>"blue","d"=>"pink"];$array2=["a"=>"绿色","b"=>"白色","e"=>"黄色","f"=>"粉色"];$result=array_diff($array1,$array2);打印_r($结果);/*输出内容Array([b]=>red[c]=>blue)*///索引数组实例$array1=["green","red","blue","pink"];$array2=["绿色","白色","黄色","粉红色","黑色"];$result=array_diff($array1,$array2);打印_r($结果);/*OutputcontentArray([1]=>red[2]=>blue)*///文档有说函数的返回内容,但是我们可以多次使用array_diff()函数来比较两个数组实现我们的目的//associativearray$array1=["a"=>"绿色","b"=>"红色","c"=>"蓝色","d"=>"粉色"];$array2=["a"=>"绿色","b"=>"白色","e"=>"黄色","f"=>"粉色"];$result1=array_diff($array1,$array2);$result2=array_diff($array2,$array1);$result3=array_merge($result1,$result2);print_r($result3);/*输出内容Array([b]=>white[c]=>blue[e]=>yellow)*///索引数组$array1=["green","red","blue","pink"];$array2=["绿色","白色","黄色","粉红色","黑色"];$result1=array_diff($array1,$array2);$result2=array_diff($array2,$array1);$result3=array_merge($result1,$result2);print_r($result3);/*输出内容Array([0]=>red[1]=>blue[2]=>white[3]=>yellow[4]=>black)*/其他方式从PHP官方文档中我们发现有一个DS扩展类,位置:“PHP手册->函数参考->其他基础扩展->数据结构”,下图可以看到介绍“PHP7EfficientData”Thestructurecanbeusedasasubstitutionforarray”,是PHP7中数组的替代品。通过仔细阅读可以看出,DS中包含的数据结构可以很好的替代数组数据结构,提供了更多的数据结构选择.DataStructures:https://www.php.net/manual/zh...\Ds\Setand\Ds\Mapextensionusageexample"green","b"=>"red","c"=>"blue","d"=>"pink"];$array2=["a"=>"green","b"=>"white","e"=>"黄色","f"=>"粉红色"];$tpm_1=new\Ds\Set($array1);$tpm_2=new\Ds\Set($array2);print_r($tpm_1->xor($tpm_2)->toArray());/*输出内容Array([0]=>red[1]=>blue[2]=>white[3]=>yellow)*///Ds\Map()$array1=["a"=>"绿色","b"=>"红色","c"=>"蓝色","d"=>"粉色"];$array2=["a"=>"绿色","b"=>"白色","e"=>"黄色","f"=>"粉红色"];$tpm_1=new\Ds\Map($array1);$tpm_2=新\Ds\Map($array2);print_r($tpm_1->xor($tpm_2)->toArray());/*ExportArray([c]=>blue[d]=>pink[e]=>yellow[f]=>pink)*///索引对//Ds\Set()$array1=["green","红色","蓝色","粉红色"];$array2=["绿色","白色","黄色","粉红色","黑色"];$tpm_1=new\Ds\Set($array1);$tpm_2=new\Ds\Set($array2);print_r($tpm_1->xor($tpm_2)->toArray());/*导出内容Array([0]=>red[1]=>blue[2]=>white[3]=>yellow[4]=>black)*///Ds\Map()$array1=[“绿色”、“红色”、“蓝色”、“粉色”];$array2=["绿色","白色","黄色","粉红色","黑色"];$tpm_1=new\Ds\Map($array1);$tpm_2=new\Ds\Map($array2);print_r($tpm_1->xor($tpm_2)->toArray());数组([4]=>黑色)*/
