Несколько общих советов:
Не назначайте числовые ключи, такие как 1 и 2, своим строкам — пусть PHP сгенерирует ключи. Или, если вам действительно нужно установить свои собственные ключи, используйте строковые ключи и дайте КАЖДОЙ строке ключ.То, что вы показываете выше, имеет первую строку с номером 1, затем вторая, третья и четвертая строки не имеют ключей (поэтому PHP будет назначать им последовательно 2, 3, 4), затем вы даете пятой строке ключ 2, который перезаписывает вторая строка (с автоматически сгенерированным ключом 2) - таким образом, вы получите четыре строки, хотя хотели пять. Последовательное назначение ключей строк с самого начала позволит избежать подобных проблем.
Аналогично, когда вы делаете что-то вроде этого:
'col2' => $form['example_select'] = [ ... ]
вы добавляете новый элемент формы в форму в ДВУХ местах - один раз в таблице и один раз вне таблицы. Если это то, что вы намереваетесь, то сначала объявите элемент формы вне таблицы и просто используйте переменную внутри таблицы.
В любом случае, следующее будет делать то, что вы хотите:
$ заголовок = [
'col1' => $this->t('COL1'),
'col2' => $this->t('COL2'),
];
$строки = [];
$строки[] = [
'col1' => 'строка-1-ячейка-1',
'col2' => 'строка-1-ячейка-2',
];
$строки[] = [
'col1' => 'строка-2-ячейка-1',
'col2' => ['данные' => [
'#тип' => 'выбрать',
'#title' => $this->t('Выбрать элемент'),
'#варианты' => [
'1' => $this->t('Один'),
'2' => $this->t('Два'),
'3' => $this->t('Три'),
],
]],
];
$ форма ['тест'] = [
'#тип' => 'выбор таблицы',
'#header' => $заголовок,
'#options' => $строки,
];