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

使用 PHP 组合数组中的单词和数字

使用 PHP 组合数组中的单词和数字

PHP
慕哥6287543 2021-12-24 09:28:08
我想在我的结果中组合两个数组我的代码   <?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-99318;      // 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);     $m = 1;    foreach($out as $result)      echo "<b>Possible Answer ". $m++. " : </b> " .implode(', ', $result)."   <br><br>";            ?>输出:可能的答案 1:23、34、45、68、79、90、112、179可能的答案 2:23、34、45、68、79、90、123、168可能的答案 3:23、34、45、68、79、101、112、168我想要这样的输出可能的答案 1:级别 2 - 23 | 级别 3 - 34 | 等级 4 - 45 | 等级 6 - 68 | 等级 7 - 79 | 级别 8 - 90 | 等级 10 - 112 | 等级 16 - 179-----------------------------------------我想组合两个数组(这程序是关于找到所有组合以达到结果[子集求和程序])
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您可以将映射器用于条目Level n和体验。


然后对于$result循环中的数组,您可以使用array_map并且对于您正在映射的每个项目,使用该值作为$mapper数组的键并使用|


这将以这种格式格式化所有可能的答案:


Possible Answer 1 :

Level 3 - 34 | Level 13 - 145 | Level 14 - 156 | Level 15 - 168 | Level 16 - 179 

例如


$mapper = [

    23 => "Level 2",

    34 => "Level 3",

    45 => "Level 4",

    56 => "Level 5",

    68 => "Level 6",

    79 => "Level 7",

    90 => "Level 8",

    101 => "Level 9",

    112 => "Level 10",

    123 => "Level 11",

    134 => "Level 12",

    145 => "Level 13",

    156 => "Level 14",

    168 => "Level 15",

    179 => "Level 16",

];


foreach($out as $result)

    echo "<b>Possible Answer ". $m++. " : </b> " .implode(' | ', array_map(function($x) use ($mapper) {

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

        }, $result))." 

  <br><br>";


查看完整回答
反对 回复 2021-12-24
?
开满天机

TA贡献1786条经验 获得超13个赞

做它并做排序

$combine=array_combine($arrlevel,$array);


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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