We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
When you use enums in PHP, there is no easy way to get the values or names as an array.
This is something which cane easily be fixed with a simple trait like this:
<?php
trait HasEnumToArray
{
public static function names(): array
{
return array_column(self::cases(), 'name');
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
public static function array(): array
{
return array_combine(self::values(), self::names());
}
}
To use it, add the use HasEnumToArray
directive into your enum and you're all set.
<?php
enum SampleEnum: string
{
use HasEnumToArray;
case NameA = 'value_a';
case NameB = 'value_b';
case NameC = 'value_c';
}
// Getting the values
SampleEnum::values();
// ['value_a', 'value_b', 'value_c']
// Getting the names
SampleEnum::names();
// ['NameA', 'NameB', 'NameC']
// Getting them as an array
SampleEnum::array();
// [
// 'value_a' => 'NameA',
// 'value_b' => 'NameB',
// 'value_c' => 'NameC',
// ]
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts, subscribe use the RSS feed.