获取 PHP 枚举的所有值

获取 php 枚举的所有值

在 PHP 8.1 中引入了枚举(Enumerations)功能,它提供了一种定义类型安全且有限值集合的方式。 在实际应用中,经常需要获取枚举的所有可能值。 本文将详细介绍如何在 PHP 中获取枚举的所有值,包括基本枚举和带有关联值的枚举。

获取基本枚举的值

对于不带有关联值的基本枚举,可以使用 cases() 方法获取所有枚举成员的数组,然后使用 array_column() 函数提取每个成员的名称。

enum Status{  case Pending;  case Active;  case Inactive;}$statuses = array_column(Status::cases(), 'name');print_r($statuses);// Output:// Array// (//     [0] => Pending//     [1] => Active//     [2] => Inactive// )

在这个例子中,Status::cases() 返回一个包含 Pending, Active, 和 Inactive 枚举成员的数组。 array_column() 函数提取每个成员的 name 属性,最终得到一个包含枚举名称的数组。

获取带有关联值的枚举的值

对于带有关联值的枚举(Backed Enums),除了名称,还可以获取每个成员关联的值。 同样可以使用 cases() 方法获取所有枚举成员的数组,然后使用 array_column() 函数提取每个成员的 value 属性。

立即学习“PHP免费学习笔记(深入)”;

enum Suit: string{  case Hearts = 'H';  case Diamonds = 'D';  case Clubs = 'C';  case Spades = 'S';}$suits = array_column(Suit::cases(), 'value');print_r($suits);// Output:// Array// (//     [0] => H//     [1] => D//     [2] => C//     [3] => S// )

在这个例子中,Suit::cases() 返回一个包含 Hearts, Diamonds, Clubs, 和 Spades 枚举成员的数组。 array_column() 函数提取每个成员的 value 属性,最终得到一个包含枚举值的数组。

使用 Trait 简化枚举操作

为了更方便地操作枚举,可以创建一个 trait,其中包含获取枚举名称和值的静态方法,以及将枚举转换为关联数组的方法。

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';}$suitArray = Suit::array();print_r($suitArray);// Output:// Array// (//     [H] => Hearts//     [D] => Diamonds//     [C] => Clubs//     [S] => Spades// )

在这个例子中,EnumToArray trait 包含了 names(), values(), 和 array() 三个静态方法。 names() 方法返回包含枚举名称的数组,values() 方法返回包含枚举值的数组,array() 方法返回一个关联数组,其中键是枚举值,值是枚举名称。

总结

通过使用 cases() 方法和 array_column() 函数,可以轻松地获取 PHP 枚举的所有值。 使用 EnumToArray trait 可以进一步简化枚举操作,方便将枚举转换为数组,以便更灵活地使用枚举数据。 在实际开发中,可以根据具体需求选择合适的方法来获取枚举的值。

以上就是获取 PHP 枚举的所有值的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1293953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月11日 09:31:19
下一篇 2025年12月11日 09:31:31

相关推荐

发表回复

登录后才能评论
关注微信