关于php的array_diff和array_diff_assoc的使用总结

关于php的array_diff和array_diff_assoc的使用总结

2015-11-07 17:01 184人阅读 评论(0) 收藏 举报

 分类:

php学习感想(1) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

好了,这是我第一次写csdn博文,允许兴奋一下

以下是我在开发一个商城系统时遇到使用array_diff的一些总结,写出来分享,也作为自己的一次回顾吧,过程很罗嗦,请各位看官耐心点

一:使用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两个差值的。各位看官如果不信,可以动手试试。小弟新手一枚,万事开头难,第一次写博文,即使	有点菜,希望各路大神海涵。

---------2015.11.7

时间: 2025-01-07 04:29:11

关于php的array_diff和array_diff_assoc的使用总结的相关文章

每天一个学习一个新的php函数(2) array_diff()/array_diff_key()/array_diff_assoc()

array_diff( array array1, array array2 [, array -] ) 说明 array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值.注意键名保留不变. 列子 <?php $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array

array_diff || array_diff_key || array_diff_assoc

////// 以第一个数组为准,比较两个数组的不同之处. array_diff (arr1, arr2) === 返回一个只出现在arr1但没有出现在arr2中的数据 标准是值不是键 array_diff_key(arr1, arr2) === 返回一个只出现在arr1但没有出现在arr2中的数据 标准是键不是值 array_diff_assoc(arr1, arr2) === 返回一个只出现在arr1但没有出现在arr2中的数据 标准是键且值

php数组的数学功能相关常用函数

php数组中有一些函数与数学相关的函数,大多都是以array开头然后下划线接一个数学上的英文单词,如下: 1 array_diff() 2 array_diff_assoc() 3 array_intersect() 4 array_intersect_assoc() 5 array_sum() 6 array_product() 7 array_count_values() 首先是数组集合函数,差集array_diff,用于得到目标数组和其他数组的都不同的那些元素 1 $arr = [1, 2

php array_intersect() 和 array_diff() 函数

在PHP中,使用 array_intersect 求两个数组的交集比使用 array_diff 求同样两个数组的并集要快. 如果要求数组 $a 与数组 $b 的差集的个数,应该使用 count($a) - count(array_intersect($a, $b)),而不要用 count(array_diff($a, $b)); 前面要比后者快,在大数组中更为明显. $array1=array("a"=>"red","b"=>&quo

深思 PHP 数组遍历的差异(array_diff 的实现)

function array_diff($array_1, $array_2) {     $diff = array(); foreach ($array_1 as $k => $v1) {         $flag = false;         foreach ($array_2 as $v2) {             if ($flag = ($v1 == $v2)) {                 break;             }         } if (!$f

php数组函数-array_diff()

array_diff()函数返回两个数组的差集数组.该数组包括了所有在被比较 数组中,但是不在任何其他参数数组中的键值 在返回数组中,键名保持不变. array_diff(array1,array2,array3...); array1:必需.与其他数组进行比较的第一个数组. array2:必需.与第一个数组进行比较的数组. array3:可选.与第一个数组进行比较的数组. 注:可用一个或任意多个数组与第一个数组进行比较. <?php $a1 = array(0=>'Cat',1=>'D

PHP 使用get_class_methods()和array_diff() 兩個相同的類中方法差集

进行二次开发时,习惯一份是原封不动的,一份正在修改.在修改时,发现修改的缺少原项目中的一些方法.本打算一个方法一个方法的对比,可是这样会比较花时间,划不来,PHP可以使用get_class_methods() 获取一个类中的所有方法,返回的是数组,刚好可以使用 array_diff()两个相同类中相差的方法,这两个方法真是帮了大忙. <?php /** * Created by PhpStorm. * User: wakasann * Date: 2016/1/28 * Time: 11:46

PHP array_diff()

定义和用法 array_diff() 函数返回两个数组的差集数组.返回的数组的元素都取自被比较的数组(既第一个数组). 在返回的数组中,键名保持不变. 语法 array_diff(array1,array2,array3...) 参数 描述 array1 必需.与其他数组进行比较的第一个数组. array2 必需.与第一个数组进行比较的数组. array3 可选.与第一个数组进行比较的数组. 提示和注释 提示:可用一个或任意多个数组与第一个数组进行比较. 注释:只用值来比较. 例子1 <?php

array_diff函数的注意事项

array_diff — 计算数组的差集 说明: array array_diff ( array $array1 , array $array2 [, array $... ] ) 对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值.注意键名保留不变. 注意:本函数只检查了多维数组中的一维.如果想比较更深的维度需要另写一个函数,今天的工作就遇到了这样的需求,所以写了一个函数来比较更深的维度. <?php header("Content-type:text/htm