gpt4 book ai didi

php - 如何将 php 枚举转换为数组?

转载 作者:行者123 更新时间:2023-12-03 09:10:50 34 4
gpt4 key购买 nike

我有以下枚举:

abstract class DaysOfWeek
{
const Sunday = 0;
const Monday = 1;
// etc.
}

如何修改以下函数以根据上面的enum生成数组?

public function getOptions()
{
return [
0 => 'Sunday',
1 => 'Monday',
];
}

为此目的使用 SplEnum 不是更好吗?

最佳答案

我不确定使用 Splenum 是否更好,但我知道这可以使用 ReflectionClass 来完成。假设您希望在扩展 DaysOfWeek 的类中定义 getOptions,您的代码可能如下所示:

abstract class DaysOfWeek
{
const Sunday = 0;
const Monday = 1;
// etc.
}


class myClass extends DaysOfWeek {
public function getOptions() {
$oClass = new ReflectionClass(__CLASS__);
$constants = $oClass->getConstants();
$retval = array();
foreach($constants as $name => $val) {
$retval[$val] = $name;
}
return $retval;
}
}

$o = new myClass();
var_dump($o->getOptions());

编辑:这是 getOptions 函数的更紧凑、更高效的版本,它使用 native PHP 函数:

    public function getOptions() {
$oClass = new ReflectionClass(__CLASS__);
$constants = $oClass->getConstants();
return(array_combine(array_values($constants), array_keys($constants)));
}

编辑2:如果 getOptions 位于不扩展 DaysOfWeek 的类中,您可以简单地引用类名,如下所示:

class AnotherClass {
public function getOptions() {
$oClass = new ReflectionClass(DaysOfWeek);
$constants = $oClass->getConstants();
return(array_combine(array_values($constants), array_keys($constants)));
}
}

$o = new AnotherClass();
var_dump($o->getOptions());

关于php - 如何将 php 枚举转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42677781/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com