PHP-如何根据条件配对数组中的项目
如何配对数组中的项目?
假设我有一系列战士.我想根据他们的权重配对它们.最接近重量的战士应配对为最佳匹配.但如果他们在同一个团队中,他们就不应该配对. > ** —第1队 – ** 输出: >战斗机VS战斗机D. 我一直在研究这个主题,发现类似但不完全的东西: 真的很感激一些帮助.提前致谢!
我很喜欢你的问题,所以我做了一个完整的强大版本.
<?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; } } } >首先,战斗机被保留在课堂上,这样可以更容易地为他们分配属性(如果你自己没有这样做,我恳请你这样做!) >战斗机之一尚未匹配 >当找到匹配时,将每个匹配战士的对象指针相互存储(因此它不再为空,加上你可以通过转到$fighterVariable->配对来访问每个战士的对)>最后,打印结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |