php中usort()函数如何工作

2024-02-14

我查看了 php 文档、在线教程,但没有看到 usort 是如何实际工作的。我在下面有一个我正在玩的例子。

$data = array(

    array('msg' => 'some text','month' => 11,'level' => 10),

    array('msg' => 'some text','month' => 5,'level' => 10),

    array('msg' => 'some text','month' => 8,'level' => 10),

    array('msg' => 'some text','month' => 12,'level' => 10),

    array('msg' => 'some text','month' => 2,'level' => 10),

    array('msg' => 'some text','month' => 3,'level' => 10),

    array('msg' => 'some text','month' => 4,'level' => 10),

    array('msg' => 'some text','month' => 7,'level' => 10),

    array('msg' => 'some text','month' => 10,'level' => 10),

    array('msg' => 'some text','month' => 1,'level' => 10),

    array('msg' => 'some text','month' => 6,'level' => 10),

    array('msg' => 'some text','month' => 9,'level' => 10)

);

我希望能够将月份从 12 到 1 排序(因为它们没有组织) 通过一些帮助,这是解决方案

function cmp($a, $b)
{
    if ($a["month"] == $b["month"]) 
    {
       return 0;
    }
    return ($a["month"] < $b["month"]) ? -1 : 1;
}

usort($data, "cmp");

但我不明白函数 cmp 如何对数组进行排序。我尝试打印每个变量 $a 和 $b,如下所示:

function cmp($a, $b)
{
   echo "a: ".$a['month']."<br/>";
   echo " b: ".$b['month']."<br/>";
   echo "<br/><br/>";
}

输出是

a: 3
b: 5

a: 9
b: 3

a: 3
b: 8

a: 6
b: 3

a: 3
b: 12

a: 1
b: 3

a: 3
b: 2

a: 10
b: 3

a: 3
b: 11

a: 7
b: 3

a: 4
b: 3

a: 12
b: 2

a: 5
b: 12

a: 12
b: 11

a: 8
b: 12

a: 5
b: 8

a: 2
b: 11

a: 6
b: 9

a: 7
b: 6

a: 6
b: 4

a: 10
b: 6

a: 1
b: 6

a: 9
b: 4

a: 7
b: 1

a: 10
b: 7

对于排序如何工作以及为什么使用 cmp($a, $b) 没有任何意义。我试图打印出它的所有过程,如你所见,但还没有找到任何解决方案来解决它是如何工作的。

thanks


功能cmp它本身不进行排序。它只是告诉usort如果一个值小于、等于或大于另一个值。例如。如果$a = 5 and $b = 9它将返回 1 表示该值$b大于其中的一个$a.

排序是通过usort.

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

php中usort()函数如何工作 的相关文章

随机推荐

  • 按字母顺序排列的列表,轨道上有 ruby

    我正在构建一个按字母顺序排序的列表 并正在寻找一种解决方案来获取数据库结果并按字母顺序排序 任何帮助是极大的赞赏 在上面的nduks的基础上 我喜欢 公司 rb def initial return if name blank name 0
  • Firestore:文档父名称缺少“/”

    我正在使用 jest 对 firestore 执行集成测试 我期望收到包含等于 field1 和 field2 的字段的文档 但是 我收到了以下错误 我尝试在 firecase 控制台中创建复合索引 但问题仍然存在 这种情况似乎只在测试期间
  • Django:分配外键 - 无法获取类的代表

    我在这里问这个问题是因为 在我的搜索中 这个错误通常与查询有关 而不是与外键分配有关 我收到的错误发生在模型的方法中 这是代码 class Deal models Model model fields def update existing
  • 为什么 Node.js 异步模块在使用 async.eachLimit(array, limit, function, callback) 的第一步后停止?

    如果我使用这段代码 async eachLimit body photos photo 10 function photo var flickr getphoto path request get url flickr host url f
  • 从命令行检测 Apple Silicon

    如何从 shell 脚本中检测到它正在 M1 Apple 硬件上运行 我希望能够运行命令行命令 以便我可以编写if 其主体仅在具有 M1 处理器的 Mac 上运行时才会执行 当然至少是 macOS Big Sur uname m 将返回ar
  • CMake找不到NVIDIA的opencl sdk

    我刚刚安装了 NVIDIA CUDA 工具套件 用它在 Windows 8 1 上开发 OpenCL 应用程序 我遇到了一些问题 1 FinedOpenCl cmake 不起作用 因为 Nvidia 工具包未设置 opencl dir cm
  • PHP:XML 文件到字符串,使用 asXML() 的 file_get_contents 或 simplexml_load_file 更快

    我正在编写一个代理服务来缓存我的移动应用程序对网络服务进行的查询 就像中间的一个人 我构建的代理站点的任务是将其从应用程序获取的查询传递到第三方 Web 服务 并将来自第三方 Web 服务的响应保存为 XML 文件 并为同一查询的所有后续调
  • 隐式类型转换优先级是如何确定的?

    这是代码 class A public int val char cval A val 10 cval a operator char const return cval operator int const return val int
  • 无法使用 PowerMockito/Mockito 模拟 URL 类

    我正在尝试使用 PowerMockito 来模拟我正在测试的代码中 java net URL 类的创建 基本上 我想防止发生真正的 HTTP 请求 而是 1 在发出请求时检查数据 2 在模拟响应上提供我自己的测试数据 这就是我正在尝试的 R
  • awk 中比较连续行

    我想使用 awk 命令比较文件中的连续行 这是输入和输出的示例 输入文件 6 7 8 9 10 4 5 6 我想要的输出文件是这样的 6 7 8 9 10 14 15 16 基本上我想比较当前行是否大于前一行 并继续打印前一行和当前行 一旦
  • 如何采取行动关闭 NSPopover?

    您好 我在我的一个应用程序中实现了 NSPopover 但弹出窗口不会关闭 我猜一旦我单击其他内容 它应该关闭 但事实并非如此 我知道有一个关闭弹出窗口操作 但这只适用于不同的按钮 当我按下同一按钮时 如何才能看到弹出窗口已打开以及何时打开
  • 使用泛型从枚举中获取最大值

    如何使用泛型从枚举中获取最大 int 值 我已尝试以下操作 但它显示以下编译错误 无法将 T 隐式转换为 int int maxValue GetMaxValue
  • 如何在 2019.3 中删除我的 IntelliJ 许可证?

    我安装了 JetBrains IntelliJ 如何删除许可证设置 我可以在以下位置找到许可证详细信息Help gt Register 菜单 但这不允许我删除许可证设置或输入无效数据 例如不存在的许可证服务器 用例 我安装了一个许可证服务器
  • 是否可以在 Spring MVC REST 端点中验证 @RequestParam?

    在 Jersey 2 中可以这样做 GET PATH user email public IDto getUser NotNull Email PathParam email String validEmail return userMan
  • 如何将列表转换为队列来实现先进先出

    考虑 public List
  • 数组公式中当前行中的 COUNTA (Google 表格)

    我有一个具有固定数量的列和动态行的 Google 工作表 我喜欢使用 countA 来计算当前行中具有值 非空白 的字段 我找到了一个公式在这里 https productforums google com forum topic docs
  • Android权限保护级别18和50

    当我转储 Nexus 7 上所有应用程序的所有权限时 我 如预期 获得保护级别为 0 正常 1 危险 2 签名 的权限 3 SIGNATURE OR SYSTEM 以下没有任何记录 但也有很多权限的保护级别设置为 18 有些权限设置为 50
  • 相机在 android 2.2 上不工作

    在Android SDK和AVD Manager中 我创建了一个新的android虚拟设备 如下所示 姓名 myavd 目标 Android 2 2 API 级别 8 SD 卡 50MiB 内置 默认 HVGA 硬件 抽象 LCD 密度 1
  • LdapConnection 与 PrimaryContext

    我有以下两种使用 LDAP 和 LDAPS 验证用户身份的实现 我想知道哪个更好 更正确 郑重声明 这两种方法都适用于 SSL 和非 SSL 连接 我也很好奇 因为当在 Wireshark 上观看时Non SSL PrincipalCont
  • php中usort()函数如何工作

    我查看了 php 文档 在线教程 但没有看到 usort 是如何实际工作的 我在下面有一个我正在玩的例子 data array array msg gt some text month gt 11 level gt 10 array msg