【发布时间】:2012-11-10 01:58:52
【问题描述】:
在array_uintersect 文档的评论中指出,回调函数必须返回 -1 ($a $ b)
回调函数的目的是比较 $a 和 $b 来决定是把它们包含在交集中,还是排除它们。那么为什么返回 -1、0 或 1 而不是简单的布尔值呢?
这是我想要实现的一些(工作)example code,我只是好奇它为什么会这样工作。
【问题讨论】:
-
但是为什么需要三个值呢?
-
考虑到
-1、0和1实际上是典型的排序标准,我认为这三个条件用于某种内部排序。 -
对不起,我没有考虑这个特殊情况。
-
在这种情况下,只需要两个值:一个值是否存在于另一个数组中。排序函数确实需要知道一个值是否不同,因为它更大或更小。为了避免两种不同语义的回调,它们只是让 array_uintersect() 使用与 usort() 相同的类型。
-
也许他们只是想在数组排序函数方面保持一致。 编辑:基本上是cleong所说的;)
标签: php arrays multidimensional-array comparison