为什么 array_uintersect() 比较 array1 和 array2、array1 和 array1 以及 array2 和 array2 之间的元素?

2023-11-21

测试脚本

$i = 0;
array_uintersect(['foo', 'bar'], ['baz', 'qux'], function($a, $b) use (&$i) {
    print_r([$a, $b, $i++]);
});

实际结果

Array
(
    [0] => bar
    [1] => foo
    [2] => 0
)
Array
(
    [0] => qux
    [1] => baz
    [2] => 1
)
Array
(
    [0] => bar
    [1] => qux
    [2] => 2
)
Array
(
    [0] => bar
    [1] => foo
    [2] => 3
)

预期结果

Array
(
    [0] => foo
    [1] => baz
    [2] => 0
)
Array
(
    [0] => bar
    [1] => qux
    [2] => 1
)

换句话说,我期望传递给回调的是左侧数组的当前元素和右侧数组的当前元素。

此外,如果我要将一个附加数组传递给array_uintersect- 又一个参数被传递给回调($c, 例如)。

有人可以解释这种行为吗?


文中没有提到的内容array_uintersect docs就是说,在内部,PHP sorts所有数组首先,从左到右。仅有的after数组已排序,PHP 是否会遍历它们(再次从左到右)以找到交集。

第三个参数(比较函数)传递给内部排序算法,而不是相交算法。因此,看到的调试输出是排序算法确定的顺序。

The zend_sort 实现一般来说使用二分快速排序实现。对于示例中大小的数组,PHP 使用插入排序。对于大型数组,PHP 使用 3 或 5 点主元以便提高最坏情况的复杂性.

由于您没有从比较函数中显式返回任何值,因此 PHP 默认返回 null (0),并且由于 PHP 使用插入排序,因此当排序遍历所有组合时,您会看到 O(n*n) 行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 array_uintersect() 比较 array1 和 array2、array1 和 array1 以及 array2 和 array2 之间的元素? 的相关文章

  • PHP - 将数据从一个站点安全地传递到另一个站点

    我有一个可以接受来自多个站点的请求的站点 有点像升级检查 这些网站将发送用户名 密码 应用程序版本等信息 然后我的网站将根据这些信息发送响应 基本上这是一个 GET请求 例如 http www mysite com user boo pas
  • PHP:合并/添加多维数组?

    假设我有几个具有相同结构的多维数组 如下所示 basketA fruit apple 1 basketA fruit orange 2 basketA fruit banana 3 basketA drink soda 4 basketA
  • 无法打开 phpmyadmin,require_once(./libraries/common.inc.php):无法打开流:没有这样的文件或目录

    当我做php usr share phpmyadmin index php 我明白了 PHP 警告 require once libraries common inc php 无法打开流 第 33 行 usr share phpmyadmi
  • 使用 calloc() 设置 char 数组,完成后还会“释放”数组

    我正在尝试设置一个字符串数组 在 C 语言中 使用 Linux 该数组将容纳 11 个字符串 静态长度 我最初将数组设置为 char Answers 10 100 但在我的代码中 我有一部分调用 fgets input sizeof inp
  • 使用 cURL 解释 PHP 中的令牌返回

    我无法解释从该服务器获得的响应 当用户尝试访问我的服务器上的页面时 此 PHP 首先运行以查看它们是否具有有效的令牌 通过我未在此处显示的上一个登录页面 ch curl init searchURL http example com isT
  • 无法将包含数据的大型 CSV 文件转换为 mysql 数据库[重复]

    这个问题在这里已经有答案了 如何将大型文本文件转换为mysql数据库 文件大小3GB 1100万行 文件中的每一行都是这样的 1303179444 20 5811 Ahmed Al Emam male ahmed e alemam ahme
  • Excel VBA - 将一行单元格值传递到数组,然后将该数组粘贴到单元格的相对引用

    使用 Excel 2010 VBA 我尝试将恒定范围的单元格 其值重新计算 复制 传递 到数组 然后我尝试将该数组传递到其正下方的新单元格范围 完成此操作后 我想再次将常量范围的新值复制 传递 到数组 并将这些新值传递到我之前传递的值正下方
  • 更改 Symfony2 中的默认语言环境

    我正在尝试更改应用程序的默认区域设置 到目前为止我尝试过的事情 将 intl default locale 设置为 et EE 将区域设置设置为 et app config parameters ini 更改了我的捆绑包 boot 方法中描
  • Python:在任意维度中使用冒号运算符对数组进行索引

    我有一个 numpy nd 数组 我的任务的简化版本是沿着每个轴获取一个向量 为了显示 import numpy x numpy array range 24 reshape 2 3 4 x0 x 0 0 x1 x 0 0 x2 x 0 0
  • 判断是否存在多对多记录组合

    这似乎是一个常见的任务 有一个简单的解决方案 但我在 StackOverflow 和 Google 上都空手而归 场景是这样的 我有两个共享多对多关系的表 A 和 B 因此 我有一个带有外键的表 A B 它映射 A 到 B 记录关系 标准的
  • html 抓取和 CSS 查询

    以下库的优点和缺点是什么 PHP 简单 HTML DOM 解析器 http simplehtmldom sourceforge net QP http querypath org phpQuery http code google com
  • PHP登录然后重定向

    我使用以下代码将用户登录到一系列安全页面 我需要将每个用户在提交后重定向到适当的页面 我想知道需要采取哪些步骤来选出三个登录级别 管理员 特殊 用户 if isset SESSION username function check logi
  • 获取特定 $_POST 数组的值

    name qty foreach POST as items gt value check qty gt 1 echo key gt value br 如何仅显示其值为 qty1 gt value qty2 gt value gt 0 的项
  • jQuery 时间戳之前的时间?

    下面是一个非常好的 jQuery 插件 与他们在 SO 上使用的插件非常相似 对我来说问题是它用它来转换时间
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • 它们是“相同的”吗?代码大战

    这是完整的问题描述 给定两个数组 a 和 b 编写一个函数 comp a b Clojure 中的 compSame a b 来检查这两个数组是否具有 相同 元素以及相同的重数 这里 相同 意味着 b 中的元素是 a 平方中的元素 无论顺序
  • 多维数组和指向指针的指针

    创建多维数组时char a 10 10 根据我的书 它说你必须使用类似于char a 10 将数组传递给函数 为什么必须这样指定长度 您不是只是将双指针传递给 with 并且该双指针不是已经指向分配的内存吗 那么为什么参数不能是char a
  • 跟踪 PHP 对象属性更改

    我正在尝试跟踪对 PHP 变量所做的所有更改 该变量可以是对象或数组 例如 它看起来像 object array a b 然后使用对象缓存将该对象持久保存到存储中 当php脚本再次运行时 因此 当脚本第二次运行时 或者另一个脚本运行并修改该
  • 证明字符串算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案

随机推荐

  • 捕获动态添加到 Jquery Datatables 表的输入字段上的更改事件

    我有一个 ajax 调用 它使用以下代码为响应中的每条记录添加一些行到数据表中 strAppName data Application Name maintCost
  • Eclipse:这些 JSP 错误是什么?

    我继承了一个 Web 应用程序 当在 Eclipse 中设置它时 它显示特定 JSP 中的错误 这些错误在 Problems 视图中没有与之相关的描述 单击它们会将我带到 JSP 的顶部 其中红色错误下划线出现在字符串的中间 如下所示 想象
  • jQuery动态改变元素高度

    我正在开发一个流体布局项目 我的文档中有一些固定高度的 DIV 并且它们的高度都不同 我需要在浏览器调整大小时按比例更改这些 DIV 高度 这是标记 div class target div div class target div div
  • 两个角度之间的最小差?

    我正在尝试计算两个角度之间的最小差异 这是我当前的代码 与我在网上找到的代码略有不同 float a1 MathHelper ToDegrees Rot float a2 MathHelper ToDegrees m fTargetRot
  • 为什么这里循环优于索引?

    几年前 有人posted on 活跃状态食谱出于比较目的 三个 python NumPy 函数 每个都接受相同的参数并返回相同的结果 a距离矩阵 其中两个摘自公开来源 它们都是 或者在我看来是 惯用的 numpy 代码 创建距离矩阵所需的重
  • 数组赋值的性能

    代码优化在 SO 中提到 分析是优化 javascript 的第一步 建议的引擎是 Chrome 和 Firefox 的分析器 这些的问题在于它们以某种奇怪的方式告诉每个函数执行的时间 但我对它们没有很好的理解 最有用的方法是探查器会告诉您
  • 如何让 fgcolor 属性在最新的 Android 版本上工作?

    我曾经能够做到这一点
  • 用PHP执行mysql“创建函数”语句

    我想运行以下命令mysql从 PHP 创建函数语句 DELIMITER CREATE FUNCTION myFunc instring varchar 4000 RETURNS int 11 NO SQL DETERMINISTIC SQL
  • 这里发生了什么?我将结果分配给 C++ 中的结果[重复]

    这个问题在这里已经有答案了 你能告诉我这是怎么回事吗 为什么这是可能的 std make unique
  • 错误 SIPEPS,版本=5.0.0.0 UCMA 4.0 VS2010/VS2013

    我在 VS 2013 和 VS 2010 上开发了 UCMA 4 0 应用程序 运行项目时 出现以下错误 无法加载文件或程序集 SIPEPS Version 5 0 0 0 Culture neutral PublicKeyToken 31
  • 将小部件放置在 QScrollArea 的中心

    如何将固定大小的自定义小部件放置在 QScrollArea 的中心 我可以使用 myWidget pos x y 手动将小部件放置在 QScrollArea 内 但 QScrollArea 中没有 sizeChanged 信号 因此如果滚动
  • 使用 WebKit.NET 从 JavaScript 调用 C# 函数

    我一直在 c win forms 项目中使用 webkit net 并且喜欢使用以下命令从 C 程序中调用 JavaScript 函数是多么容易 browser Document InvokeScriptMethod functionNam
  • 如何通过删除不必要的字段来扩展评论框架(django)?

    我一直在阅读有关评论框架以及如何自定义它的 django 文档 http docs djangoproject com en 1 1 ref contrib comments custom 在该页面中 它显示了如何add表单中的新字段 但我
  • 使用 Python Spark Redshift

    我正在尝试将 Spark 与 amazon Redshift 连接 但收到此错误 我的代码如下 from pyspark sql import SQLContext from pyspark import SparkContext sc S
  • 在共享库中混合 PIC 和非 PIC 对象

    这个问题与this one以及它的答案 我刚刚发现我正在开发的构建中有一些丑陋之处 情况有点像下面这样 以 gmake 格式编写 请注意 这特别适用于 sparc 和 x86 硬件上的 32 位内存模型 OBJ SET1 some obje
  • Heroku 上的临时服务器的不同 robots.txt

    我在 Heroku 上有暂存和生产应用程序 对于爬虫 我设置了robots txt文件 之后我收到了谷歌的消息 尊敬的网站管理员 您网站的主机名 https www myapp com 与您的 SSL 证书中的任何 主题名称 都不匹配 这些
  • Rails 使用 Devise 向在线用户展示

    我想在 谁的在线 模块中向我的在线用户展示 我正在使用 Devise 来管理我的用户 我到处寻找 但我不知道如何管理它 你有线索吗 提前致谢 当有人登录时 你可以将他放入一个数组中 如果有人注销 只需将他从数组中删除即可 所以你可以循环数组
  • 为 Azure 数据库禁用查询编辑器中的设计

    当我尝试在 SQL Managements Studio 2012 中管理 Azure 数据库查询时 我发现 在查询编辑器中设计 选项被禁用 它适用于其他数据库 但不适用于 Azure 有办法启用它吗 Thanks 不幸的是 这是一个设计问
  • WPF 中的分页集合视图

    WPF 中是否有 PagedCollectionView 的实现 它存在于 Silverlight 中 但不存在于 WPF 中 如果没有 实现这一点的最简单方法是什么 您只需从以下位置获取代码即可银光一号并在您的 WPF 项目中使用它
  • 为什么 array_uintersect() 比较 array1 和 array2、array1 和 array1 以及 array2 和 array2 之间的元素?

    测试脚本 i 0 array uintersect foo bar baz qux function a b use i print r a b i 实际结果 Array 0 gt bar 1 gt foo 2 gt 0 Array 0 g