Forum PHP 2025

UnitEnum::cases

(PHP 8 >= 8.1.0)

UnitEnum::cases生成枚举的条目清单

说明

public static UnitEnum::cases(): array

该方法返回打包后的 array,以声明的顺序,包含了枚举的所有条目。

参数

此函数没有参数。

返回值

以语法中声明的顺序,返回该枚举中定义的所有条目数组。

示例

示例 #1 基本用法

下例演示了如何返回枚举条目。

<?php
enum Suit
{
case
Hearts;
case
Diamonds;
case
Clubs;
case
Spades;
}

var_dump(Suit::cases());
?>

以上示例会输出:

array(4) {
    [0]=>
    enum(Suit::Hearts)
    [1]=>
    enum(Suit::Diamonds)
    [2]=>
    enum(Suit::Clubs)
    [3]=>
    enum(Suit::Spades)
}
添加备注

用户贡献的备注 2 notes

up
60
avishkasenanayake at hotmail dot com
2 years ago
If anyone is here wondering how to get all the names from the enum cases and map them into an array, it can be done like this:

array_column(CampaignPeriods::cases(), 'name');

Likewise, have the 2nd argument as 'value' to get the enum's values.

Happy coding, web artisan :)
up
0
miken32 at example dot com
2 days ago
The Enum documentation says, "if a Backed Enum is serialized to JSON, it will be represented by its scalar value only, in the appropriate type."

This means you can easily get a backed Enum's values for use in a JSON document using only the BackedEnum::cases() method:

<?php
enum Suits
: string {
case
Hearts = 'Heart';
case
Diamonds = 'Diamond';
case
Clubs = 'Spade';
case
Spades = 'Club';
}
echo
json_encode(Suits::cases());
?>

Results in this output:

["Heart","Diamond","Spade","Club"]
To Top