PHP-如何根据条件配对数组中的项目

2024-05-23

如何将数组中的项目配对? 假设我有一个数组Fighters。我想根据他们的情况将他们配对Weights。体重最接近的拳手应作为配对最佳匹配。但如果他们是在同一个团队中,他们不应该配对.

  • **---团队 1--**
  • 战斗机A体重为60
  • 战斗机B体重为65
  • **--2队--**
  • 战斗机C重量为62
  • 战斗机 D 体重为 60
  • **--第 3 队--**
  • 战斗机E重量为64
  • 战斗机F重量为66

Output:

  • 战士A VS 战士D
  • 战斗机B VS 战斗机F
  • 战斗机C VS 战斗机E

我一直在研究这个主题,发现了类似但不完全相同的东西:随机但独特的配对,有条件 https://stackoverflow.com/questions/7085140/random-but-unique-pairings-with-conditions

非常感谢一些帮助。提前致谢!


我非常喜欢你的问题,所以我做了一个完整的健壮版本。

<?php

    header("Content-type: text/plain");
    error_reporting(E_ALL);

    /**
     * @class            Fighter
     * @property $name   string
     * @property $weight int
     * @property $team   string
     * @property $paired Fighter  Will hold the pointer to the matched Fighter
     */
    class Fighter {
        public $name;
        public $weight;
        public $team;
        public $paired = null;

        public function __construct($name, $weight, $team) {
            $this->name   = $name;
            $this->weight = $weight;
            $this->team   = $team;
        }
    }

    /**
     * @function sortFighters()
     *
     * @param $a Fighter
     * @param $b Fighter
     *
     * @return int
     */
    function sortFighters(Fighter $a, Fighter $b) {
        return $a->weight - $b->weight;
    }

    $fighterList = array(
        new Fighter("A", 60, "A"),
        new Fighter("B", 65, "A"),
        new Fighter("C", 62, "B"),
        new Fighter("D", 60, "B"),
        new Fighter("E", 64, "C"),
        new Fighter("F", 66, "C")
    );
    usort($fighterList, "sortFighters");

    foreach ($fighterList as $fighterOne) {
        if ($fighterOne->paired != null) {
            continue;
        }
        echo "Fighter $fighterOne->name vs ";
        foreach ($fighterList as $fighterTwo) {
            if ($fighterOne->team != $fighterTwo->team && $fighterTwo->paired == null) {
                echo $fighterTwo->name . PHP_EOL;
                $fighterOne->paired = $fighterTwo;
                $fighterTwo->paired = $fighterOne;
                break;
            }
        }

    }
  1. 首先,战士被分成不同的类别,这使得为他们分配属性变得更容易(如果你自己还没有这样做,我强烈建议你这样做!)
  2. 制作一组拳手,并为他们分配名字、体重和团队。
  3. 按权重对数组进行排序(使用usort()和排序功能sortFighters()按每个元素的权重属性排序。
  4. Iterate through the array and match based on:
    1. 战斗机一号尚未匹配
    2. 战斗机二号与战斗机一号不在同一团队
    3. 战斗机二号尚未匹配
  5. 当找到匹配时,将每个匹配战斗机的对象指针存储到彼此(因此它不再为空,而且您可以通过访问每个战斗机对$fighterVariable->paired)
  6. 最后,打印结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP-如何根据条件配对数组中的项目 的相关文章

  • 如何使用正则表达式将多个
    标签替换为一个
    标签?

    I want br br 变成 br 正则表达式的模式是什么 注 br 标签可以连续出现两次以上 html preg replace br gt s i br html 这将捕获任何组合 br br or br 它们之间有任意数量或类型的空
  • 熊猫:什么是视图?

    请帮助我理解 什么是view在熊猫中 我知道如果我们改变一些东西view我们总是对原始对象进行更改 但物体的视图和原始物体有不同id s例如 这是否意味着view是另一个对象引用原始对象吗 机制是什么 我尝试过但找不到解释 import p
  • Laravel 5 使用语句[重复]

    这个问题在这里已经有答案了 第一次使用 Laravel 5 我了解命名空间的使用以及为什么需要使用它们 我不明白的是为什么我需要添加如下所示的 use 语句 在控制器的顶部 use Session use Input use Respons
  • 如何在没有副本的情况下将结构转换为字节数组?

    StructLayout LayoutKind Explicit public struct struct1 FieldOffset 0 public byte a 1 byte FieldOffset 1 public int b 4 b
  • php 中的 cpu_get_usage ?

    我创建了一个基准类 允许用户插入例如 timer gt checkpoint 1 检查一些代码的时间 内存消耗等 如果她 他想测试它 她 他必须在代码末尾插入 result timer gt result 这会向公共函数 result 提供
  • 递增字母数字组合

    我偶然发现了这篇文章 如何在 PHP 中仅使用小写字母和数字来增加字母数字字符串 https stackoverflow com questions 42866349 how to increment alphanumeric string
  • JqG​​rid PHP:通过工具栏过滤时突出显示结果

    我想在使用过滤器工具栏时突出显示搜索结果 我尝试使用该解决方案Oleg https stackoverflow com users 315935 oleg and 阿布舍克 西蒙 https stackoverflow com users
  • PHP 电子邮件表单每次刷新页面时都会发送电子邮件

    我的 php 电子邮件每次刷新页面时都会发送电子邮件 例如 用户正在填写表单并使用发送按钮发送 这一切都很好 但如果他们刷新页面 它会再次发送包含所有相同表单信息的电子邮件 我相信这是问题代码 但不知道它是什么 require once c
  • 属性“tablename.title”未定义

    我是伊比 我想做的是上传图像 照片 以及具有更新功能的数据库中的路径条目 我已点击此链接 http www yiiframework com wiki 349 how to upload image photo and path entry
  • 未调用 Ajax 回调。如何解决这个问题?

    我再次来这里寻求您的建议 我有一些 AJAX 调用 用于从我的编辑器 PHP 在线编辑器 运行代码 大家可以来看看my site http web guru99 com 我有一些 ajax 调用来发送编辑器的数据并接收输出 问题 for 循
  • Laravel 保存文件将其发布为 bin 文件

    我试图在 laravel 中保存文件 但它最终被保存为 bin 文件 file request gt file file name Carbon now gt format Y m d strtotime Carbon now file g
  • 如何处理“不符合”的数组?

    如何对两个数组进行逐元素算术运算 在第一维度中一致 但也有一个额外的维度 示例 乘法数组a 3 x 3 x 2 按数组b 3 x 3 a lt array 1 18 dim c 3 3 2 b lt diag 3 由于数组不一致 因此以下操
  • 如果重复,则从数组中删除两个值 - JavaScript/jQuery

    我这里有一个数组 var myArr 1 1 2 5 5 7 8 9 9 现在我想删除重复的两个外观 所以想要的结果是not var myArr 1 2 5 7 8 9 but var myArr 2 7 8 基本上我知道如何删除重复项 但
  • 将数组传递给函数 - 指针与引用(C++ 与 C)

    我有一个关于将数组传递给函数的最佳实践的广泛问题 因此 过去当我用 C 语言编程时 我想要一个函数的输入是一个数组 我会声明该函数的输入参数是一个指针 这效果相对较好 然而 我已经开始更多地使用 C 进行编程 并试图确定将数组传递到函数中的
  • 更新 Bootstrap 缩略图网格 - ajax 请求

    设想 我有一个带有显示国家 地区的 Twitter Bootstrap 缩略图网格的视图 当用户单击一张图像时 它应该在同一网格 屏幕 中显示与该国家 地区相关的城市 技术的 首先 我用国家 地区填充 dataProvider 然后我应该将
  • 如何使用 Laravel IoC 将数据库注入构造函数

    我想使用 DB 类与 IoC 容器进行事务处理 use Illuminate Database Connection as DB public function construct DB db this gt db db 但是当使用 db
  • 如何使用 jQuery 或 php 从 Instagram 令牌获取访问令牌

    我是 Instagram API 的新手 发现一些与了解如何获取访问令牌相关的问题 我所做的是在 Instagram 上注册 创建了一个应用程序 并使用了客户端 id 和重定向 url 当我将以下内容发布到浏览器中时 它会给我一个 code
  • Laravel http 请求:无法运行多个请求

    我在 Laravel http 请求方面遇到了严重的问题 请帮我解决这个问题 我假设我有 2 个请求路由到相同的控制器 Req 1 http localhost 8000 manualScheduler runScript task nam
  • PHP:使用 UTF-8 的 strpos 和 substr

    假设我有一个很长的 UTF 8 编码字符串 并说我想检测是否 var存在于该字符串中 假设 var始终是简单的字母或 ASCII 字符数字 例如 hello123 我不需要使用mb strpos or iconv strpos正确的 因为只
  • slim 3 php 应用程序无法在 CentOS 上运行 nginx 访问被拒绝可能是由于 session_start() 函数

    我最近一直在努力在 macOS 上的 virtualbox 上的 CentOS 7 上安装最新的 nginx 1 14 php 7 2 5 和 mariaDB 10 3 7 php终于可以工作了 我已经测试过了php info index

随机推荐

  • 如何使用陀螺仪和磁力计计算航向

    我有陀螺仪和磁力计的原始数据 根据这些数据 我必须计算精度为 1Deg 的航向信息 我想知道 是否有任何算法可以帮助我使用可用信息以上述准确性获取标题信息 任何文章或任何链接也会有帮助 Thanks 我假设您正在使用电话来收集gyrosco
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • 避免 Java 中的重复导入:继承导入?

    有没有办法 继承 导入 Example 常见枚举 public enum Constant ONE TWO THREE 使用此枚举的基类 public class Base protected void register Constant
  • 现代 UI WPF 导航

    我正在使用现代 ui wpf 并尝试从 CheckLogin xaml 页面导航到 MainWindow xaml 页面 它们位于解决方案根目录中 我在 CheckLogin xaml 中写了这样的内容 BBCodeBlock bbBloc
  • 两个数组相乘 - 区域小数分隔符问题

    Background 刚才 我回答了一个问题 我必须将两个相同大小的数组相乘 但是我注意到我的本地小数分隔符存在一个特殊问题 Sample Code Sub Sample Dim arr1 As Variant arr2 As Varian
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • iOS Twitter NSURLErrorDomain 代码=-1012

    我正在尝试通过在我的应用程序中注册 Twitter 来获取用户的联系方式 我发现this https github com malcommac DMTwitterOAuthgithub上的项目看起来非常好 我只遇到一个问题 如果我使用来自
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 使用 Python 将连续日期分组在一起

    Given dates datetime 2014 10 11 datetime 2014 10 1 datetime 2014 10 2 datetime 2014 10 3 datetime 2014 10 5 datetime 201
  • 集成 Spring Webflow 2 和 Apache Tiles [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近开始升级一些应用程序以使用 Spring Webflow 2 并且我想利用 Webflow 2
  • Android:GestureDetector 无法与选项卡(TabActivity、Tabwidget)一起工作(gestureDetector.onTouchEvent(event) 始终为 false)

    我已经用不同的子活动实现了 TabActivity intent new Intent setClass this MyChildTabActiviy class Initialize a TabSpec for each tab and
  • onTaskRemoved() 在华为和小米设备中没有被调用

    我一直在使用onTaskRemoved 服务中的方法 用于检测应用程序何时通过滑动从设备最近列表中删除 我执行一些日志记录和发生这种情况时需要执行的一些其他操作 它工作完美 然后我在运行Android 6 0的华为设备上检查了这个方法 该方
  • 容器中的 WordPress - 加载某些图像时出现 502

    我已使用容器将 WordPress 部署在 Azure AppService 中 使用 Azure 容器注册表 使用的图像来自 docker hub gt wordpress latest 我还启用了 settings WEBSITES E
  • 在android中将字符串转换为日期格式

    我得到像 1604341549 这样的字符串 并想将它们转换为正常的日期格式 例如 2012 年 2 月 12 日 4 00 这是我的实现 SimpleDateFormat sdf new SimpleDateFormat yyyyMMdd
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • 使用 jenkins pipeline 插件实现动态并行构建的想法

    我需要并行运行一组构建任务 构建的任务是动态的 可能会发生变化 我需要一些帮助来实现下面的细节 构建的任务详细信息将在 xml 中动态生成 其中包含哪些任务必须并行 串行执行的信息 example 说有一个版本A 其中有以下任务和执行顺序
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • PHP-如何根据条件配对数组中的项目

    如何将数组中的项目配对 假设我有一个数组Fighters 我想根据他们的情况将他们配对Weights 体重最接近的拳手应作为配对最佳匹配 但如果他们是在同一个团队中 他们不应该配对 团队 1 战斗机A体重为60 战斗机B体重为65 2队 战