Прежде всего, чтобы передать значения текстового поля на сервер, вам также нужно дать текстовому полю имя:
<input type="text" name="values[]" value="$value">
Один из способов синхронизировать ваши текстовые поля с вашими флажками - это небольшой взлом:
foreach ($data['items'] as $key => $value) {
echo "<label class='Items'>
<input type='hidden' name='keys[{$key}]' value='checkbox_isnt_selected'>
<input type='checkbox' checked='checked' name='keys[$key]' value='$value'>
<input type="text" name='values[$key]' value='$value'>
</label>";
}
Таким образом, если флажок не установлен, вы получаете checkbox_isnt_selected
на своем сервере, в противном случае вы получаете соответствующий $value
. Флажок будет перезаписывать значение скрытого ввода при установке.