[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/php-ai-client/src/Messages/Util/ -> ModalityCombinationsUtil.php (source)

   1  <?php
   2  
   3  declare (strict_types=1);
   4  namespace WordPress\AiClient\Messages\Util;
   5  
   6  use WordPress\AiClient\Messages\Enums\ModalityEnum;
   7  /**
   8   * Utility class for building modality combinations.
   9   *
  10   * @since 1.4.0
  11   */
  12  class ModalityCombinationsUtil
  13  {
  14      /**
  15       * Builds all modality combinations that always include the required modalities
  16       * with every possible subset of the optional modalities.
  17       *
  18       * Uses binary representation to enumerate all 2^n subsets of the optional
  19       * modalities. Each subset is merged with the required modalities to form one
  20       * complete combination. Modality lists are unordered, so only unique
  21       * combinations (not permutations) are produced.
  22       *
  23       * @since 1.4.0
  24       *
  25       * @param list<ModalityEnum> $required Required modalities included in every combination.
  26       * @param list<ModalityEnum> $optional Optional modalities to generate subsets from.
  27       * @return list<list<ModalityEnum>> List of modality combinations, each containing
  28       *                                  all required modalities plus a unique subset of
  29       *                                  the optional modalities.
  30       */
  31      public static function buildCombinations(array $required, array $optional): array
  32      {
  33          $combinations = [];
  34          $count = count($optional);
  35          $subsetCount = 1 << $count;
  36          // 2^count.
  37          for ($i = 0; $i < $subsetCount; $i++) {
  38              $combo = $required;
  39              for ($j = 0; $j < $count; $j++) {
  40                  if ($i & 1 << $j) {
  41                      $combo[] = $optional[$j];
  42                  }
  43              }
  44              $combinations[] = $combo;
  45          }
  46          return $combinations;
  47      }
  48  }


Generated : Mon Oct 19 08:20:34 2026 Cross-referenced by PHPXref