array_multisort 与维护数字索引关联[重复]

2023-11-24

我可以对多维数组进行排序,但不保留数字索引关联。

如何保持数字索引关联?

CODE:

$waiters[76] = array('weight' => 67, 'specialties' => 1);
$waiters[14] = array('weight' => 41, 'specialties' => 2);
$waiters[58] = array('weight' => 85, 'specialties' => 3);
$waiters[89] = array('weight' => 98, 'specialties' => 4);
$waiters[68] = array('weight' => 86, 'specialties' => 5);
$waiters[31] = array('weight' => 13, 'specialties' => 6);
print_r($waiters);
// Obtain a list of waiters
foreach ($waiters as $id => $waiter) {
    $weight[$id]        = $waiter['weight'];
    $specialties[$id]   = $waiter['specialties'];

}

// Sort the data with weight descending, specialties ascending
// Add $data as the last parameter, to sort by the common key
array_multisort(
    $weight, SORT_DESC, SORT_NUMERIC, 
    $specialties, SORT_ASC, SORT_NUMERIC, 
    $waiters
);
print_r($waiters);

OUTPUT:

Array
(
    [0] => Array
        (
            [weight] => 98
            [specialties] => 4
        )

    [1] => Array
        (
            [weight] => 86
            [specialties] => 5
        )

    [2] => Array
        (
            [weight] => 85
            [specialties] => 3
        )

    [3] => Array
        (
            [weight] => 67
            [specialties] => 1
        )

    [4] => Array
        (
            [weight] => 41
            [specialties] => 2
        )

    [5] => Array
        (
            [weight] => 13
            [specialties] => 6
        )

)

期望的输出:

Array
(
    [89] => Array
        (
            [weight] => 98
            [specialties] => 4
        )

    [68] => Array
        (
            [weight] => 86
            [specialties] => 5
        )

    [58] => Array
        (
            [weight] => 85
            [specialties] => 3
        )

    [76] => Array
        (
            [weight] => 67
            [specialties] => 1
        )

    [14] => Array
        (
            [weight] => 41
            [specialties] => 2
        )

    [31] => Array
        (
            [weight] => 13
            [specialties] => 6
        )

)

$keys = array_keys($waiters);
array_multisort(
    $weight, SORT_DESC, SORT_NUMERIC,
    $specialties, SORT_ASC, SORT_NUMERIC,
    $waiters, $keys
);
$waiters = array_combine($keys, $waiters);

或使用 uasort

uasort(
    $data,
    function ($some_data, $another_data) {

        $result = 0;

        if ($some_data['weight'] > $another_data['weight']) {
            $result = -1;
        } elseif ($some_data['weight'] < $another_data['weight']) {
            $result = 1;
        } elseif ($some_data['specialties'] > $another_data['specialties']) {
            $result = 2;
        } elseif ($some_data['specialties'] < $another_data['specialties']) {
            $result = -2;
        }

        return $result;

    }
);

但uasort性能明显比array_multisort差

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

array_multisort 与维护数字索引关联[重复] 的相关文章

  • RuntimeException - 会话存储未根据请求设置 - Laravel Socialite - Facebook

    我在用着Laravel 5 7 and Laravel Socialite 3 1 我想使用登录Facebook我刚刚为此项目配置了应用程序 这些是我为此配置的主要文件 env FACEBOOK CLIENT ID FACEBOOK CLI
  • 测试 CodeIgniter 会话变量的正确方法是什么?

    获取以下代码片段 测试确保会话变量不为空的最佳方法是什么 如果稍后在我的脚本中 我调用以下内容 第一个打印正确 但在第二个我收到消息 未定义的变量 已登录 我尝试过使用 empty and isset 但两者均未成功 我还尝试使用向后执行
  • 如何处理PDO异常[重复]

    这个问题在这里已经有答案了 我正在尝试与PDOphp 上的类 但我在找到处理错误的正确方法时遇到了一些麻烦 我编写了以下代码
  • 通过 PEAR 安装 PHPUnit

    我安装时遇到问题PHPUnit 3 4 6 via 梨1 9 0 当我发现频道后pear phpunit de并尝试使用以下命令之一 pear 安装 phpunit PHPUnit pear 安装 alldeps phpunit PHPUn
  • Laravel 5.7:维护模式的自定义刀片模板,但不是 503.blade.php

    每次php artisan down开启后 Laravel 显示 503 页面 好的 我可以通过创建名为的新文件来自定义它503 blade php inside resources views errors 关键是 我在任何时候都不认为维
  • 如何将值发布到输入框中?

    Intro I would like to get the current time after clicking at click and POST the value into input text box Note 假设包含引导样式表
  • 在运行之前可以检查 imagecreatefromjpeg 是否会导致内存耗尽致命错误吗?

    我已经对此进行了一些搜索 并且我知道不可能从内存耗尽的致命错误中恢复 我有一个运行 imagecreatefromjpeg 的脚本 我尝试捕获异常 我尝试使用 运行该函数 然后检查返回值是否为 null 或 false 我尝试使用 die
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 将数组分配给数组

    所以我正在尝试一些数组 但我不明白为什么这不起作用 int numbers 5 1 2 3 int values 5 0 0 0 0 0 values numbers 出现以下错误 Error 1 error C2106 left oper
  • Monolog:通过邮件发送错误日志会导致每个发送的错误都会收到一封额外的邮件

    对于通过邮件发送的每个错误日志 我们都会收到另一封额外的电子邮件 其中包含 2 行 smtp 调试日志消息 新创建的 symfony 演示 symfony new demo 配置独白以通过邮件发送错误消息 如docs https symfo
  • PHP cURL 看不到 /etc/hosts 文件

    我在让 PHP cURL 库识别我在我的文件中创建的别名时遇到了麻烦 etc hosts file 这就是我的 etc hosts现在归档 192 168 0 20 www example dev 在另一端 192 168 0 20 Apa
  • POSTed 数组保留其值

    今天 我注意到我的一个 WordPress 安装的行为方式非常奇怪 每当我从仪表板更新帖子时 它的一些额外输入都会保留它们已有的值 所有这些都是多维数组 例如 post php post 123 action 编辑
  • ElasticSearch 和 PHP 中的多个字段搜索

    我正在使用最新版本弹性搜索 PHP https github com elasticsearch elasticsearch php以及最新版本的 MongoDB 和 ElasticSearch 我需要对可以包含一个或多个值的多个字段进行搜
  • 从 URL 任何文件类型创建图像

    我知道imagecreatefromgif https www php net manual en function imagecreatefromgif php imagecreatefromjpeg https www php net
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求
  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中

随机推荐

  • 纯CSS滚动动画

    我一直在寻找一种仅使用 CSS3 单击位于页面顶部的按钮时向下滚动的方法 所以我找到了这个教程 http tympanus net codrops 2012 06 12 css only responsive layout with smo
  • 我可以使用什么正则表达式从 Ruby 中的 url 获取域名?

    我正在尝试构建一个正则表达式来提取给定网址的域 for http www abc google com http abc google com https www abc google com http abc google com 应该给
  • 完全按照“绘图”面板中预览的方式保存绘图

    我知道已经存在一个非常相似的问题here 但提供的答案对我不起作用 这是我通常的工作流程 我生成一个绘图并在 RStudio 的 绘图 面板中调整绘图的大小 直到我满意为止 然后我打电话dev size 以获得准确的尺寸 之后 我保存情节g
  • RangeValidator 中的日期格式

    我正在使用 RangeValidator 来验证文本框中输入的日期 并且它在默认日期格式下工作正常 但现在我想要 dd MM yyy 中的日期格式 但它使用此日期格式生成例外 请为我提供解决方案 我的代码 在 aspx 页面中
  • Oracle PL/SQL - 如何创建简单的数组变量?

    我想创建一个可在我的 PL SQL 代码中使用的内存数组变量 我在 Oracle PL SQL 中找不到任何使用纯内存的集合 它们似乎都与表相关联 我希望在 PL SQL C 语法 中执行类似的操作 string arrayvalues n
  • 无法删除Default.png?

    我一直在玩弄初始屏幕 但决定不使用它 但现在 虽然我从资源中删除了 Default png 但当我启动应用程序时 启动画面仍然出现在模拟器中 Default png 不在项目文件夹中 我关闭并重新打开 Xcode 启动画面仍然存在 关闭并重
  • Jib:如何在不安装的情况下使用 amazon-ecr-credential-helper?

    使用时jib gradle 插件要构建并推送到 AWS ECR 需要我安装AWS ECR 凭证助手否则构建会抱怨 系统没有 docker credential ecr login CLI 我想知道是否有一种方法可以在不安装凭证助手的情况下推
  • 为什么我不能将指定的初始值设定项与非聚合的结构一起使用?

    C 有一个很好的新特性 struct Point int x int y int z Point p x 47 y 1701 z 0 但如果我添加一个构造函数 那么我将被禁止使用良好的指定初始化语法 struct Point Point i
  • Word Automation:无需通过剪贴板即可编写 RTF 文本

    我在尝试着替换 Word 中的当前选择 2003 2007 由一些人RTF 字符串存储在变量中 这是当前的代码 Clipboard SetText strRTFString TextDataFormat Rtf oWord ActiveDo
  • 逻辑:数据库或应用程序/2(约束检查)

    这是一个特定版本这个问题 我想检查是否插入了重复的行 我应该在我的应用程序层以编程方式检查它 if exists obj throw new DuplicateObjectException HibernateSessionFactory
  • 如何将 OpenXML 放入剪贴板以便将其粘贴到 Excel 中?

    我正在使用 Microsoft 的 DocumentFormat OpenXML 库生成 OpenXml 我试图弄清楚如何将此文档放入剪贴板 以便我可以将数据粘贴到 Excel 中 就像从 Excel 复制一样 当我从 Excel 中复制时
  • 如何使用 JavaScript 通过 Mandrill 发送电子邮件?

    我已关注this有关如何使用 JavaScript 和 Mandrill 发送电子邮件的指南 但我在控制台中收到此错误 Cross Origin Request Blocked The Same Origin Policy disallow
  • Jupyter笔记本:垂直分屏(即水平添加单元格)

    是否可以在另一个单元格的一侧添加一个单元格 从而垂直分割屏幕 在比较两个事物列表时 这似乎非常有用 我没有看到这个选项是开箱即用的 所以我猜它需要一些额外的js 现在这可以在Jupyter实验室 See this例子 有一个菜单项可以创建同
  • Postgres 从其他表中插入插入值

    我有两张桌子 CREATE TABLE tbl a id serial primary key NOT NULL name text NOT NULL tbl b reference NOT NULL CREATE TABLE tbl b
  • 将google protobuf lib静态链接到dll库

    在安装和使用 google protobuf 库的指导页面上 在 Windows 上安装 Protobuf 它指出 如果您的项目本身是一个供第三方软件使用的 DLL 我们建议您不要在库的公共接口中公开协议缓冲区对象 并且您将协议缓冲区静态链
  • 一个 iPhone 开发者密钥可以让多少个开发者使用? [关闭]

    Closed 这个问题是无关 目前不接受答案 我正在寻找创建一个 iPhone 应用程序并将注册iPhone 开发者计划 但是 我不清楚如果我加入标准计划 我可以拥有多少开发人员 它说企业计划适用于拥有超过 500 名开发人员的公司 所以如
  • iphone SDK:如何实现签名捕获?

    如何捕获用户签名 这个想法是用户将用他们的手指在框中绘制他们的签名 保存过程的一部分是将这个图像写入他们的照片文件夹 我想这样就可以了 http www ipodtouchfans com forums showthread php t 1
  • python 中的字符范围

    有没有办法改变字符范围 像这样的东西 for c in xrange a z print c 我希望你们能帮忙 这对于自定义生成器来说是一个很好的用途 Python 3 def char range c1 c2 Generates the
  • Android Activity 作为对话框

    我有一个名为whereActity它也有子对话框 现在 我想将此活动显示为另一个活动的对话框 我怎样才能做到这一点 为了将活动作为对话框启动 我在中定义了它AndroidManifest xml
  • array_multisort 与维护数字索引关联[重复]

    这个问题在这里已经有答案了 我可以对多维数组进行排序 但不保留数字索引关联 如何保持数字索引关联 CODE waiters 76 array weight gt 67 specialties gt 1 waiters 14 array we