详解php中array_diff_assoc()函数

阅读量:30
2021-04-17

比较两个数组的键名和键值,并返回差集:

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"red","b"=>"green","c"=>"blue");
$result=array_diff_assoc($a1,$a2);
print_r($result);
?>

定义和用法

array_diff_assoc() 函数用于比较两个(或更多个)数组的键名和键值 ,并返回差集。

该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

语法

array_diff_assoc(array1,array2,array3...);

参数 描述

array1 必需。与其他数组进行比较的第一个数组。

array2 必需。与第一个数组进行比较的数组。

array3,... 可选。与第一个数组进行比较的其他数组。

返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

比较两个数组的键名和键值,并返回差集:

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_diff_assoc($a1,$a2);
print_r($result);
?>

比较三个数组的键名和键值,并返回差集:

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"red","f"=>"green","g"=>"blue");
$a3=array("h"=>"red","b"=>"green","g"=>"blue");
$result=array_diff_assoc($a1,$a2,$a3);
print_r($result);
?>

一:使用array_diff和array_diff_assoc前奏

在商城开发中,经常要用到对数据的增删改查。其中,数据的更新,很多时候我们只需要对其中的一个字段,或者部分字段进行更新,而不需要全部字段一起更新,那么这里就需要找出哪些是需要更新的,哪些是不需要更新的。array_diff和array_diff_assoc均可以检查数组的差值,我们只需对比从数据库中获取的要更新的旧数据数组和提交的新数据数组作比较,array_diff和array_diff_assoc均可返回差数组。

二:学习array_diff 和array_diff_assoc

array_diff()

array array_diff( array $array1 , array $array2 [, array $... ] ),返回一个数组,数组中包括了array1中所有与其 他数组不同值的元素,另外对应的键名保留。但该函数只能对多维数组的第一维进行差值比较。而且这种对比时只对键值的对比,与键 名无关(只会找两个(或两个以上)数组中键值有区别的值)。

例子:array_diff可以找出俩数组的差值c_pid:

但是,如果array的任一键值和更改的值有重叠,则array_diff无法测出此更改值,如下:

正常情况下array1中和array2中的比较中,更新的元素有c_pid和c_order,但结果只得到c_order的差 值,为什么呢?

个人理解:array_diff()将array1的值和array2的值做对比,而不考虑键名,所以array1的c_pid的值 在array2的c_level中找到,故忽略c_pid的差值。

array_diff_assoc()

这个就不详细讲了,它和array_diff()用法一样,不同的是,它的比较是带上键名的,也就是说它找到的 就是几个数组中键名相同键值不同的项,也就是说,上面array_diff的第二种情况它是可以找出c_pid和 c_order两个差值的。各位看官如果不信,可以动手试试。小弟新手一枚,万事开头难,第一次写博文,即使 有点菜,希望各路大神海涵。

以上就是详解php中array_diff_assoc()函数的详细内容,更多请关注星网无限其它相关文章!

声明:本文原创发布星网无限,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@处理

THE END

发表评论

相关推荐

  • php getdate函数怎么用

    php getdate函数用于返回当前本地的“日期/时间”的“日期/时间”信息,其语法为“getdate(timestamp)”,该函数会返回带有与时间 ...

    阅读量:100
    2021-04-19
  • column的10篇内容推荐

    column-fill属性会将不同高度的指定列以高度差最小化的方式进行对齐,这里我们就来看一下CSS3的column-fill属性对齐列内容高 ...

    阅读量:100
    2021-04-19
  • PHPMailer 中文使用说明小结_PHP教程

    A开头: $AltBody --属性 出自:PHPMailer : $AltBody 文件:class.phpmailer .php 说明:该属性的设置是在邮件正文不支持HT ...

    阅读量:134
    2021-04-19
  • php date与gmdate的获取日期的区别_PHP教程

    date -- 格式化一个本地时间/日期   gmdate -- 格式化一个 /UTC 日期/时间,返回的是格林威治标准时(GMT)。   举个 ...

    阅读量:115
    2021-04-19
  • php 正确解码javascript中通过escape编码后的字符_PHP教程

    这是很久以前收集的一个,不知道谁写的了,但经过测试没有问题~ JavaScript代码

    阅读量:114
    2021-04-19