Получить карточку товара с понятными свойствами и различить NULL, пустую строку и ноль

Фактические данные получены через расширение interbase от отдельной локальной базы Firebird. Собственные учебные объекты удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Тип первой строкиstdClass
ID первой карточки1
Название первой карточкиКабель
Остаток первой карточки0
Примечание первой карточкине указано
Свойство note существуетда
isset для note с NULLнет
Название второй карточки пустоеда
Примечание второй карточкипустая строка
Остаток второй карточки4
После двух карточек получен конец выдачида
Строки и дополнительные наблюдения
{
    "first": {
        "ID": 1,
        "title": "Кабель",
        "note": null,
        "stock": 0
    },
    "second": {
        "ID": 2,
        "title": "",
        "note": "",
        "stock": 4
    },
    "class": "stdClass",
    "null_label": "не указано",
    "empty_label": "пустая строка",
    "eof": false,
    "result_freed_before_render": true
}

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