count () выдает предупреждение, если NULL из PHP 7.2. Есть ли лучший способ исправить это для PHP 5.6+, чем добавить еще одно условие?

Следующее работало для меня в Mongoose v5.0.5:

    Schedule.find({})
        .populate({path: 'eventComments', options: {sort:{"commentDate": "descending"}}})
        .exec(function(err, result) {
            if (err) {
                throw err
            } 

            else {
                return res.json(result);
            }
    });

P.S. Ключевое различие между этим примером и примером Kitten заключается в том, что commentDate находится в кавычках, тогда как Date (в примере Kitten) нет. Это может потребоваться для некоторых из вас. Надеюсь это поможет.

1
задан Martin 23 February 2019 в 19:43
поделиться

3 ответа

Выдумка будет использовать null coalesce (??) , чтобы установить его в пустой массив, если null ...

if (count($this->implements??[]) > 0)
0
ответ дан Nigel Ren 23 February 2019 в 19:43
поделиться

count () выдаст предупреждение, если NULL из PHP 7.2. Есть ли лучший способ исправить это, чем добавить другое условие?

ДА

Решение состоит в том, чтобы аргумент был массивом:

if (count((array)$this->implements) > 0)
[114 ] Это работает на PHP 5 и 7, все версии до 7.2.4 протестированы. Нет записей в журнале ошибок, где найдено.

0
ответ дан Martin 23 February 2019 в 19:43
поделиться

Вы можете использовать empty() . Он вернет true, если свойство не существует (без вызова «Notice») или является ложным (пустой массив - ложным):

if (empty($this->implements) === false) {
}
0
ответ дан Salman A 23 February 2019 в 19:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: