分类: Python/Ruby
2012-02-29 11:05:51
array_udiff() 函数返回一个数组,该数组包括了所有在被比较数组中,但是不在任何其它参数数组中的值,键名保留不变。
array_udiff() 函数与 的行为不同,后者用内部函数进行比较。
数据的比较是用 array_udiff() 函数的 function 进行的。function 函数带有两个将进行比较的参数。如果第一个参数小于第二个参数,则函数返回一个负数,如果两个参数相等,则要返回 0,如果第一个参数大于第二个,则返回一个正数。
语法array_udiff(array1,array2,array3...,function)参数 | 描述 |
---|---|
array1 | 必需。被比较的数组。 |
array2 | 必需。用来做比较的数组。 |
array3 | 可选。用来做比较的数组,可有多个。 |
function | 可选。自定义的比较回调函数。 |
上面这段代码,将$a1 和 $a2 进行比较,然后取差集。
但是 运行结果却令我百思不得其解,如下:
Array ( [1] => b [3] => d )
仔细看上面的结果,可以发现 $a1种的 'a' 没有和$a1 中的 d ,$a2 种的 3,f 进行对比,比较令人费解 ,并且结果没有达到预期结果,手册页没有过多的说明。
准备看php源码,看看array_udiff的实现方式,准备工作如下:PHP 5.3: svn checkout php-src-5.3
PHP 5.4: svn checkout php-src-5.4
PHP HEAD: svn checkout php-src-trunk
最新的大家可以来这查看:,下载 php源码 。(附:mac系统真操蛋,不给root权限 在/下建目录都建不了,导致白白checkout一次)
我下载的是 php5.3 ,下载下来后,ext文件夹就是相关函数列表了。还在研究,预知后事如何,请听下回分解。