Использование print в контексте выражения

Рейтинг: 1Ответов: 3Опубликовано: 25.02.2015

print всегда возвращает 1, поэтому может быть использован в контексте выражения

Что означает в контексте выражения? Пожалуйста, покажите на примере(-ах).

Ответы

▲ 1Принят

Это значит, что print можно использовать внутри логического выражения, например:

if ((print "foo") && (print "bar")) {
    // безусловно попадаем сюда после вывода двух строк
}

Но так делать не надо, потому что вы сломаете мозг всем, кто будет читать ваш код. Считайте это наследием царского режима.

▲ 2
// Использование в условиях
if (print 'bar') {
    // 'bar' was printed
}

// Функция вернет 1 (truthy)
function() {
    return print('hello');
}

// Присваивание значения ($a будет 1, а не True)
$a = print "True";
▲ 1

Ораторы выше ответили достаточно ёмко, но добавлю: Выражение - это условие в данном случае. Обычно if(){}else{} Во времена когда динозавры кушали пещерных людей, а PHP переживал своё рождение, print() юзали в качестве проверки - смог ли оператор сбросить в STDOUT переданное? Сейчас же это конструкция языка, которая только номинально числится функцией, а главная особенность функций - это обязательное возвращение чего-либо. Поэтому пока что возвращает число 1. Всегда. Думаю в будущем уберут эту особенность, хотя может и нет - зачем трогать то, что и так работает хорошо?