PHP で列挙型のすべての値を取得するにはどうすればいいですか? 質問する

PHP で列挙型のすべての値を取得するにはどうすればいいですか? 質問する

PHP 8.1 は、列挙型のサポートを含めて、まもなくリリースされます。列挙型機能のいくつかをテストしていましたが、それに関するドキュメントはあまり見つかりませんでした。そこで質問です。列挙型のすべての値を取得するにはどうすればよいでしょうか?

ベストアンサー1

基本的な列挙型の場合:

$suits = array_column(Suit::cases(), 'name');

値が必要なバックアップ列挙型の場合:

$suits = array_column(Suit::cases(), 'value');

次のようなことができます:

trait EnumToArray
{

  public static function names(): array
  {
    return array_column(self::cases(), 'name');
  }

  public static function values(): array
  {
    return array_column(self::cases(), 'value');
  }

  public static function array(): array
  {
    return array_combine(self::values(), self::names());
  }

}

enum Suit: string
{

  use EnumToArray;

  case Hearts = 'H';
  case Diamonds = 'D';
  case Clubs = 'C';
  case Spades = 'S';

}

Suit::array()戻ります:

Array
(
    [H] => Hearts
    [D] => Diamonds
    [C] => Clubs
    [S] => Spades
)

おすすめ記事