首页 / PHP / php-从数组值组合计算最接近的匹配项
php-从数组值组合计算最接近的匹配项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-从数组值组合计算最接近的匹配项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2060字,纯文字阅读大概需要3分钟。
内容图文
![php-从数组值组合计算最接近的匹配项](/upload/InfoBanner/zyjiaocheng/674/223e645e7dca43eb9ce3e25f8b4a50b9.jpg)
我有一个零件长度数组,例如:
array(150, 180, 270);
然后我有一个测量值($a = 440)
我需要计算长度大于$a的两个最接近的可能组合,而无需手动编写数百种可能的组合来计算出来.
所以:
150
180
270
150150
150180
150270
180 180
180270
270270
150150150
150150180
..等等.
这将需要运行一定的次数,而不仅仅是找到前两个匹配项并停止运行,因为150 150 150比$270 270更接近$a,但可能随后运行.
编辑:我还需要存储组成匹配的部分的组合,最好存储在数组中.
我希望我已经解释得足够好,以至于有人可以理解.
解决方法:
由于这是一个占用大量资源的脚本,所以我认为最好是预先提供选项以生成选择,然后使用该数据创建变量/对象/ sql脚本以永久存储数据.例如,做类似的事情
SELECT * FROM combination_total WHERE size > YOUR_SIZE ORDER BY size ASC LIMIT 2;
我拥有的新脚本与此类似,但是它只是生成所有组合的数组,没有任何重复.似乎又很快了.注意$maxLength变量,当前设置为2000,可以使用您自己的最大大小进行修改.
<?php
$partLengths = array(150, 180, 270);
$currentCombinations = array(
array(
'total' => 150,
'combination' => array(150)
),
array(
'total' => 180,
'combination' => array(180)
),
array(
'total' => 270,
'combination' => array(270)
)
);
$maxLength = 2000;
$largestSize = 0;
function generateCombination() {
global $currentCombinations, $largestSize, $partLengths;
$tmpCombinations = $currentCombinations;
foreach ($tmpCombinations as $combination) {
foreach ($partLengths as $partLength) {
$newCombination = $combination['combination'];
$newCombination[] = $partLength;
sort($newCombination);
$newCombinationTotal = array_sum($newCombination);
if (!combinationExists($newCombination)) {
$currentCombinations[] = array(
'total' => $newCombinationTotal,
'combination' => $newCombination
);
}
$largestSize = ($newCombinationTotal > $largestSize) ? $newCombinationTotal : $largestSize;
}
}
}
function combinationExists($combination) {
global $currentCombinations;
foreach ($currentCombinations as $currentCombination) {
if ($combination == $currentCombination['combination']) {
return true;
}
}
return false;
}
while ($largestSize < $maxLength) {
generateCombination();
}
// here you can use $currentCombinations to generate sql/object/etc
var_dump($currentCombinations);
?>
内容总结
以上是互联网集市为您收集整理的php-从数组值组合计算最接近的匹配项全部内容,希望文章能够帮你解决php-从数组值组合计算最接近的匹配项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。