PHP环境下如何获取枚举(Enum)类型的所有可选值?
PHP 8.1 获取枚举所有值的方法
PHP 8.1 内置的枚举类型默认提供了静态方法cases(),直接调用即可获取该枚举的所有值。
- 纯枚举使用示例
定义纯枚举:
enum OrderStatus { case Created; case Paid; case Delivered; case Canceled; }
调用方法获取所有枚举值:$allCases = OrderStatus::cases();
返回结果为包含所有枚举实例的数组,顺序和定义顺序完全一致:
[ OrderStatus::Created, OrderStatus::Paid, OrderStatus::Delivered, OrderStatus::Canceled, ]
- 回退枚举(绑定标量值)使用示例
定义绑定了int类型值的回退枚举:
enum OrderStatus: int { case Created = 1; case Paid = 2; case Delivered = 3; case Canceled = 4; }
如果需要获取所有枚举对应的标量值,可以搭配array_map处理返回结果:
$allValues = array_map(fn($case) => $case->value, OrderStatus::cases()); // 最终得到 $allValues = [1,2,3,4]
小提示:如果需要同时获取枚举的名称和对应值,可以将上述遍历逻辑调整为返回关联数组即可。
内容的提问来源于stack exchange,提问作者Dees Oomens
相关产品推荐
相关产品推荐

