You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8.1中如何获取数组中存储的枚举值

如何将PHP枚举对象数组转换为对应的值数组?

你直接对枚举对象数组调用array_values()无法得到期望的枚举值,是因为数组中的元素是枚举对象实例,而非字符串类型,当后续代码尝试将这些对象转为字符串时就会触发Object of class XXXX could not be converted to string错误。要获取数组中存储的枚举对应值,而非枚举的所有预设值,可以用以下两种简便方法:

  • 方法一:使用array_map()遍历提取
    通过匿名函数遍历数组中的每个枚举对象,直接访问其公开的value属性获取对应值:

    enum MonEnum: string{
      case Case1 = 'one';
      case Case2 = 'two';
      case Case3= 'three';
    }
    
    $array_of_enums = [ MonEnum::Case1, MonEnum::Case2 ]; 
    
    $enum_values = array_map(fn($enum) => $enum->value, $array_of_enums);
    // 输出结果:[ 'one', 'two' ]
    
  • 方法二:使用array_column()直接提取属性
    由于PHP枚举的value是公开属性,PHP 8.1及以上版本可以直接用array_column()提取指定属性值:

    $enum_values = array_column($array_of_enums, 'value');
    // 输出结果:[ 'one', 'two' ]
    

注意:array_values()的作用只是重置数组的数字索引,不会转换元素的类型,所以它无法帮你把枚举对象转为对应的值,必须主动提取value属性。

内容的提问来源于stack exchange,提问作者J.BizMai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:40:12