“Не-не” отрицательный php-хинт
Сейчас занят запуском одного блога на игровую тематику, а так же пошли уже первые клиенты с курса Сергея Жуковского, что радует. Практикуюсь в быстрой и качественной настройке WordPress.
Чтобы вы не скучали напишу небольшой php-хинт, который, мне кажется, понравится изучающим этот язык. Во всяком случае мне он показался забавным и не лишённым изысканности)
Кто из вас не встречал подобный php-код?
function foo( $foo ) {
// тварим чудеса
if ( $foo ) // $foo не булевое значение
return true;
else
return false;
}
Всё очень просто - требуется вернуть булевое значение (true/false), только проблема в том, что сама переменная $foo не обязательно булевого типа, поэтому нельзя вернуть её напрямую.
Вариант 1, приводим его к булевому значению
function foo( $foo ) {
// фокус-покус
return (boolean) $foo;
}
Вариант 2, приводим его к булевому значению (укороченный вариант)
function foo( $foo ) {
// фокус-покус
return (bool) $foo;
}
Вариант 3, двойное-отрицание!!!
function foo( $foo ) {
// фокус-покус
return !!$foo;
}
Первое отрицание (оператор не - !) приводит $foo к отрицательному булевому значению, т.е. false, а следующее “не” переворачивает уже к изначальному значению, но в булевом виде).
И напоследок - не сложно догадаться, что если вам нужно вернуть true, когда передаваемая переменная false, то убираем одно “не”:
function foo( $foo ) {
// вуаля
return !$foo;
}
Вот и всё, надеюсь вам понравилось;-)
Из той же оперы, так что прочти обязательно:

15 октября 2007 в 9:53
Интересно бы ещё оценить варианты с точки зрения производительности. Понятное дело, что на практике разницы заметно не будет, просто любопытно. Для интерпретации с умной JIT компиляцией скорее всего результат будет одинаковый. Без оптимизации исходный вариант скорее всего равен вариантам 1-2, а вот 3 будет подольше. Ну и с точки зрения читабельности вариант 3 - не вариант
15 октября 2007 в 13:56
К сожалению я не владею навыками нагрузочного тестирования)