如何计算枚举中的情况并获得随机值或名称?



如何计算像这样的枚举中的大小写?我有函数getRandomDataTypeName()getRandomDataTypeValue(),for($i = 0; $i < DataType::count(); $i++)应该动态学习这个公共静态方法count():int

<?php
enum DataType: string {
case ACCEPTED = "accepted";
case WITH_ERRORS = "with errore";
case DONE = "done";
case FAILED ='failed';

public static function getRandomDataTypeName(): string {
$arr =  array();
$arrDT = DataType::cases();
for($i = 0; $i < DataType::count(); $i++)
$arr[$i] = $arrDT[$i]->name;
$i = array_rand($arr, 1);
return $arrDT[$i]->name;
}
public static function getRandomDataTypeValue(): string {
$arr =  array();
$arrDT = DataType::cases();
for($i = 0; $i < DataType::count(); $i++)
$arr[$i] = $arrDT[$i]->value;
$i = array_rand($arr, 1);
return $arrDT[$i]->value;
}

public static function count(): int {
return count(DataType::cases());
}
}
?>

将此方法添加到枚举中并获得随机大小写

public static function random(): self
{
$count = count(self::cases()) - 1;
return self::cases()[rand(0, $count)];
}

然后直接获取名称或值

DataType::random()->name // return random name
DataType::random()->value // return random value

相关内容

最新更新