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

我想在我的结果中组合两个数组

我的代码


   <?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


-----------------------------------------

我想组合两个数组

(这程序是关于找到所有组合以达到结果[子集求和程序])


慕哥6287543
浏览 178回答 2
2回答

ABOUTYOU

您可以将映射器用于条目Level n和体验。然后对于$result循环中的数组,您可以使用array_map并且对于您正在映射的每个项目,使用该值作为$mapper数组的键并使用|这将以这种格式格式化所有可能的答案:Possible Answer 1 :Level 3 - 34 | Level 13 - 145 | Level 14 - 156 | Level 15 - 168 | Level 16 - 179&nbsp;例如$mapper = [&nbsp; &nbsp; 23 => "Level 2",&nbsp; &nbsp; 34 => "Level 3",&nbsp; &nbsp; 45 => "Level 4",&nbsp; &nbsp; 56 => "Level 5",&nbsp; &nbsp; 68 => "Level 6",&nbsp; &nbsp; 79 => "Level 7",&nbsp; &nbsp; 90 => "Level 8",&nbsp; &nbsp; 101 => "Level 9",&nbsp; &nbsp; 112 => "Level 10",&nbsp; &nbsp; 123 => "Level 11",&nbsp; &nbsp; 134 => "Level 12",&nbsp; &nbsp; 145 => "Level 13",&nbsp; &nbsp; 156 => "Level 14",&nbsp; &nbsp; 168 => "Level 15",&nbsp; &nbsp; 179 => "Level 16",];foreach($out as $result)&nbsp; &nbsp; echo "<b>Possible Answer ". $m++. " : </b> " .implode(' | ', array_map(function($x) use ($mapper) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $mapper[$x] . " - " . $x;&nbsp; &nbsp; &nbsp; &nbsp; }, $result))."&nbsp;&nbsp; <br><br>";

开满天机

做它并做排序$combine=array_combine($arrlevel,$array);
打开App,查看更多内容
随时随地看视频慕课网APP