为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 PHP 中获取和生成重复数字(子集)数组

如何在 PHP 中获取和生成重复数字(子集)数组

PHP
Smart猫小萌 2021-12-24 15:06:51
我检查了代码并意识到它不能显示重复的数字我的代码      <?php      /* Designated level for each exp      Level 2 - 23 exp      Level 3 - 34 exp      Level 4 - 45 exp      Level 5 - 56 exp      Level 6 - 68 exp      Level 7 - 79 exp      Level 8 - 90 exp      Level 9 - 101 exp      Level 10 - 112 exp      Level 11 - 123 exp      Level 12 - 134 exp      Level 13 - 145 exp      Level 14 - 156 exp      Level 15 - 168 exp      Level 16 - 179 exp      */      $limit =  100000-99370;      // Level      $arrlevel = array ('Level 2','Level 3','Level 4','Level 5','Level 6','Level 7','Level 8','Level 9','Level 10','Level 11','Level 12','Level 13','Level 14','Level 15','Level 16');      // Exp      $array = array (23,34,45,56,68,79,90,101,112,123,134,145,156,168,179);      $array = array_filter($array, function($var) use ($limit) {      return ($var <= $limit);      });      $num = count($array);      $total = pow(2, $num);      $out = array();      for ($i = 0; $i < $total; $i++) {      $comb = array();      for ($j = 0; $j < $num; $j++) {      // is bit $j set in $i?      if (pow(2, $j) & $i){      $comb[] = $array[$j];      }      }      if (array_sum($comb) == $limit)      {      $out[] = $comb;      }      }      array_multisort(array_map('count', $out), SORT_ASC, $out);      $out = array_unique($out, SORT_REGULAR);      ];我的输入和输出如果我输入 99318输出是这样的可能的答案 1:级别 10 - 112 ,级别 11 - 123 ,级别 12 - 134 ,级别 13 - 145 ,级别 15 - 168我也想生成重复的数字但它不能显示像这样的重复数字答案可能的答案:级别 4 - 45 ,级别 10 - 112 ,级别 11 - 123 ,级别 11 - 123 ,级别 12 - 134 ,级别 13 - 145您可以看到有两个级别 11 - 123我想要这样的输出可能的答案:级别 4 - 45 ,级别 10 - 112 ,级别 11 (x2) - 246 ,级别 12 - 134 ,级别 13 - 145我想对所有重复数字进行分组并汇总它们
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

获得结果的一种选择是将另一个值与 array_count_values 的结果一起传递给array_map。


然后在映射中,您可以确定显示基于索引的数字计数,就像$countValues[$x]映射器一样。


例如


foreach($out as $result) {

    $countValues = array_count_values($result);

    echo "<b>Possible Answer " . $m++ . " : </b><br> " . implode(' , ',

            array_map(function ($x) use ($mapper, $countValues) {

                $strCount = $countValues[$x] > 1 ? " (" . $countValues[$x] . ")" : "";

                return $mapper[$x] . $strCount . " - " . $x;

            }, array_unique($result))) . "

      <br><br>";

}

这会给你一个结果


Possible Answer 1 :

Level 2 - 23 , Level 6 - 68 , Level 7 (x2) - 79 , Level 9 - 101 , Level 10 - 112 , Level 15 - 168 

Php 演示,作为测试重复值 79$array


查看完整回答
反对 回复 2021-12-24
  • 1 回答
  • 0 关注
  • 244 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号