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
)