diff --git a/core/valuesetdef.class.inc.php b/core/valuesetdef.class.inc.php index 44733976d..d6600c0f9 100644 --- a/core/valuesetdef.class.inc.php +++ b/core/valuesetdef.class.inc.php @@ -527,14 +527,14 @@ class ValueSetEnum extends ValueSetDefinition $aValues = []; if (is_array($this->m_values)) { - foreach ($this->m_values as $value) { + foreach ($this->m_values as $key => $value) { // Handle backed-enum case if (is_object($value) && enum_exists(get_class($value))) { - $aValues[] = $value->value; + $aValues[$value->value] = $value->value; continue; } - $aValues[] = $value; + $aValues[$key] = $value; } } elseif (is_string($this->m_values) && strlen($this->m_values) > 0) diff --git a/tests/php-unit-tests/unitary-tests/core/ValueSetEnumTest.php b/tests/php-unit-tests/unitary-tests/core/ValueSetEnumTest.php index 9ef6af4cb..aa0ba494d 100644 --- a/tests/php-unit-tests/unitary-tests/core/ValueSetEnumTest.php +++ b/tests/php-unit-tests/unitary-tests/core/ValueSetEnumTest.php @@ -64,7 +64,7 @@ class ValueSetEnumTest extends ItopTestCase "c" => "c", ], ], - "Array, already ordered" => [ + "Array without keys, already ordered" => [ ["a", "b", "c"], [ 0 => "a", @@ -72,12 +72,20 @@ class ValueSetEnumTest extends ItopTestCase 2 => "c", ], ], + "Array with keys, already ordered" => [ + ["a" => "a", "b" => "b", "c" => "c"], + [ + "a" => "a", + "b" => "b", + "c" => "c", + ], + ], "Backed-Enum" => [ ABCEnum::class, [ - 0 => "a", - 1 => "b", - 2 => "c", + "a" => "a", + "b" => "b", + "c" => "c", ], true, // Is the input value a backed enum? ],