我想遍歷列舉:
enum Shapes
{
case RECTANGLE;
case SQUARE;
case CIRCLE;
case OVAL;
}
Shapes如果我這樣做,我會得到const not defined:
foreach (Shapes as $shape) { }
我帶來的最佳解決方案是手動為列舉創建陣列:
$shapes = [
Shapes::RECTANGLE,
Shapes::SQUARE,
Shapes::CIRCLE,
Shapes::OVAL,
];
foreach ($shapes as $shape) { }
有沒有更好的方法來迭代列舉?
uj5u.com熱心網友回復:
您可以使用case()在列舉上生成案例串列,如下所示:
enum Shapes
{
case RECTANGLE;
case SQUARE;
case CIRCLE;
case OVAL;
}
foreach (Shapes::cases() as $shape) {
echo $shape->name . "\n";
}
這個的輸出是:
RECTANGLE
SQUARE
CIRCLE
OVAL
適用于 PHP 8.1 及更高版本。
請參閱:PHP 小提琴
uj5u.com熱心網友回復:
您可以嘗試Shapes::cases(),它回傳給定列舉的所有情況的陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/486611.html
