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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP-如何根据条件配对数组中的项目脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如何配对数组中的项目?
假设我有系列战士.我想根据他们的权重配对它们.最接近重量的战士应配对为最佳匹配.但如果他们在同一个团队中,他们就不应该配对.

> ** —第1队 – **
>战士A重量是60
>战斗机B重量是65
> ** – 第2队 – **
>战斗机C重量是62
>战斗机D重量是60
> ** – 第3队 – **
>战斗机E重量是64
>战斗机F重量是66

输出

>战斗机VS战斗机D.
>战斗机B VS战斗机F.
>战斗机C VS战斗机E.

我一直在研究这个主题,发现类似但不完全的东西:
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,new fighter("C",62,"B"),new fighter("D",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;
            }
        }

    }

>首先,战斗机被保留在课堂上,这样可以更容易地为他们分配属性(如果你自己没有这样做,我恳请你这样做!)
>制作一系列战士,并为他们分配名称,重量和团队.
>按重量对数组进行排序(使用usort()和排序函数sortfighters()按每个元素的weight属性排序.
>迭代数组并匹配基于:

>战斗机之一尚未匹配
>战斗机2与战斗机不在同一个团队中
>战斗机2尚未匹配

>当找到匹配时,将每个匹配战士的对象指针相互存储(因此它不再为空,加上你可以通过转到$fighterVARiable->配对来访问每个战士的对)>最后,打印结果.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP-如何根据条件配对数组中的项目全部内容,希望文章能够帮你解决PHP-如何根据条件配对数组中的项目所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。