【PHP】コードの中に「!!」を見つけて「……?」となった話。
せっかく不忍池の近くを通ったのに、久しぶりに食べたクレープが旨すぎてポケモンGOをやらずひたすらむしゃむしゃ食べていたfukasawaです。こんにちは。
やはり、好物はたまに食べるくらいのほうがありがたみを感じられて良いですね。
さて、今回はPHPの小ネタです。
PHPのコードを読んでいた際、以下のような記述を見かけました。
<?php
$result = !!$this->CustomAuth->user();
「『!!』とは……?」と思いググろうとしたのですが、そもそも「!!」という記号でググっても検索結果はヒットせず……。なんとか頑張ってググったところ、以下にたどり着きました。
『!!』は特殊な演算子というわけではなく、『!』演算子を2回連続で行っているだけのようです。 『!』演算子を2回行うことで、PHPの自動型変換の仕組みを使い、booleanに型変換しているということらしいです。
<?php
$test = [];
var_dump($test); // array(0) { }
var_dump(!$test); // bool(true)
var_dump(!!$test); // bool(false)
実行結果は(bool)でキャストしたときと同じになります。
<?php
$test = [];
var_dump((bool)$test); // bool(false)
パッと見たときにわかりやすいのは(bool)の方かなと思うのですが、いろいろな書き方があるのですね。