Пропустить поле или очистить его: два разных изменения

Фактические данные получены через расширение interbase по TCP к отдельному серверу Firebird с проверкой пароля. Собственные учебные пользователи, базы и промежуточные резервные файлы удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Исходное имяAnna
Новое имяAnn
Пропущенные middle/last сохраненыда
После явного пустого middle"" (пустая строка)
Фамилия после обоих измененийReader
Вход с тем же паролем работаетда
Строки и дополнительные наблюдения
{
    "before": {
        "first": "Anna",
        "middle": "M",
        "last": "Reader",
        "plugin": "Srp                                                                                                                                                                                                                                                         "
    },
    "after_first_only": {
        "first": "Ann",
        "middle": "M",
        "last": "Reader",
        "plugin": "Srp                                                                                                                                                                                                                                                         "
    },
    "after_explicit_empty": {
        "first": "Ann",
        "middle": "",
        "last": "Reader",
        "plugin": "Srp                                                                                                                                                                                                                                                         "
    },
    "account": {
        "connected": true,
        "identity_matches": true
    },
    "service_actions": [
        {
            "started": true,
            "completed": true,
            "output_type": "bool"
        },
        {
            "started": true,
            "completed": true,
            "output_type": "bool"
        }
    ]
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.