PHP: есть ли противоположность оператора объединения нулей?

if (timeSpan.TotalDays < 1)
    return timeSpan.ToString(@"hh\:mm\:ss");

return timeSpan.TotalDays < 2
    ? timeSpan.ToString(@"d\ \d\a\y\ hh\:mm\:ss")
    : timeSpan.ToString(@"d\ \d\a\y\s\ hh\:mm\:ss");

Все литералы должны быть экранированы.

0
задан Gomi 18 January 2019 в 17:02
поделиться

2 ответа

Я не думаю, что есть оператор, который делает именно это.

Ближайшим является оператор подавления ошибок @:

$data['id_user'] = @$user->getId();

Если $user->getId() получает ошибку, сообщение об ошибке подавляется, и значение равно null.

0
ответ дан Barmar 18 January 2019 в 17:02
поделиться

Если вы определили класс __toString() в своем пользовательском объекте и получили этот идентификатор, тогда вы можете использовать оператор объединения нулей:

class User
{
    public function __toString()
    {
        return (string) $this->getId();
    }
}

$data['id_user'] = $user ?? null;

Это также не будет генерировать никаких предупреждений. [ 113]

Однако, это не очень помогает, если у вас есть более одного поля, с которым вы хотите сделать это.

0
ответ дан Alex Howansky 18 January 2019 в 17:02
поделиться
Другие вопросы по тегам:

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