如何迭代枚举

发布于 2025-02-04 12:18:00 字数 545 浏览 4 评论 0原文

我想迭代枚举:

enum Shapes
{
    case RECTANGLE;
    case SQUARE;
    case CIRCLE;
    case OVAL;
}

如果这样做,我会得到形状 const无法定义:

foreach (Shapes as $shape) { }

我提供的最好的解决方案是手动为枚举创建数组:

$shapes = [
    Shapes::RECTANGLE,
    Shapes::SQUARE,
    Shapes::CIRCLE,
    Shapes::OVAL,
];
foreach ($shapes as $shape) { }

有什么更好的方法可以迭代枚举吗?

I want to iterate over enum:

enum Shapes
{
    case RECTANGLE;
    case SQUARE;
    case CIRCLE;
    case OVAL;
}

I get Shapes const not defined if I do this:

foreach (Shapes as $shape) { }

The best solution I came with is to manually create array for enum:

$shapes = [
    Shapes::RECTANGLE,
    Shapes::SQUARE,
    Shapes::CIRCLE,
    Shapes::OVAL,
];
foreach ($shapes as $shape) { }

Is there any better way to iterate over the enum?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼藏柔 2025-02-11 12:18:00

您可以使用 cases()喜欢的枚举列表这:

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 fiddle

You can generates a list of cases on an enum with cases() like this:

enum Shapes
{
    case RECTANGLE;
    case SQUARE;
    case CIRCLE;
    case OVAL;
}

foreach (Shapes::cases() as $shape) { 
    echo $shape->name . "\n";
}

The output of this is:

RECTANGLE
SQUARE
CIRCLE
OVAL

for PHP 8.1 and greater.

See: PHP Fiddle

木森分化 2025-02-11 12:18:00

您可以尝试形状:: case(),它返回给定枚举的所有情况的数组。

You can try Shapes::cases() ,it returns an array of all cases of a given Enum.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文