Получение массива в формате ключ-значение (map), используя ArrayHelper с пакета Yii2 делает задачу очень простой.
Например, для простой карты:
$arr = [
['id' => '111', 'name' => 'a', 'class' => 'x'],
['id' => '222', 'name' => 'b', 'class' => 'x'],
['id' => '333', 'name' => 'c', 'class' => 'y'],
);
$result = ArrayHelper::map($arr, 'id', 'name');
// the result is:
// [
// '111' => 'a',
// '222' => 'b',
// '33' => 'c',
// ]
Или дяля получения с учетом вложенности (optgroup, например):
$arr = [
['id' => '111', 'name' => 'a', 'class' => 'x'],
['id' => '222', 'name' => 'b', 'class' => 'x'],
['id' => '333', 'name' => 'c', 'class' => 'y'],
);
$result = ArrayHelper::map($arr, 'id', 'name', 'class');
// the result is:
// [
// 'x' => [
// '111' => 'a',
// '222' => 'b',
// ],
// 'y' => [
// '333' => 'c',
// ],
// ]