如何计算像这样的枚举中的大小写?我有函数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