return falseの意味
returnとは
ここからはPHPの話。returnはご存知の通り、以下のようなもの。
return は、プログラムの制御を呼び出し元に戻します。 呼び出し側のモジュールでは、呼び出しの次の式から続行します。
https://www.php.net/manual/ja/function.return.php(最終閲覧2020/04/18)
returnは関数の返り値を設定するもので、呼び出されたところに値を戻す。exitとかを指定していない限り、呼び出した後から読み取られる。
returnについて改めてみていこうってことで、書いてみる。
気になったのは以下の形。
return;(NULL返す)
return FALSE;(論理型)
return “";(string)
returnとempty
別に難しいことではない。returnが返すのは、文字列型、整数型、論理型、配列型。
ちょっと、emptyを使いながら見てみる。
emptyで空判定されるのは以下の通り。
“" (空文字列)
https://www.php.net/manual/ja/function.empty.php(2020/04/18)
0 (整数 の 0)
0.0 (浮動小数点数の 0)
“0" (文字列 の 0)NULL
FALSE
array() (空の配列)
以下で、各々についてみていく。
特に真新しさは無いけど、それぞれ何を返すのかが分かる。paizaio使うとブラウザで検証できるからやりやすい。php以外にも使えるし。
<?php
function get(){
// return []; array(0){}
// return FALSE;//bool(false)
// return "";//string(0) ""
// return '';//string(0) ""
// return 0;//int(0)
// return NULL;//NULL
// return;//NULL
}
if(!empty($b)){
var_dump(get());
}else{
echo "no";
}
上記の場合だと、全部「no」を返す。正直、return;だけでNULL返すってことを良く理解してなかった。emptyはissetの場合と比較して、通る場合と通らない場合があるから注意したい。
cf, PHP isset, empty, is_null の違い早見表
例えば、以下のような、空配列を含んでいる配列を返す場合は、emptyではなく値が返される。空ではないと判定されて、空っていう配列が入っているよと判断される。
<?php
function get(){
$a['aa'] = [];
return $a;
}
$b = get();
var_dump($b);//array(1) {["aa"]=>array(0) {}}
if(!empty($b)){
var_dump(get());//array(1) {["aa"]=>array(0) {}}
}else{
echo "no";
}
?>
これを避けるにはarray_filterとかを使ってやればいい。そうすると、余計な空の配列は削除されるんで、以下のように変わる。
<?php
function get(){
$a['aa'] = [];
$bb = array_filter($a["aa"]);
return $bb;
}
$b = get();
var_dump($b);//array(0) {}
if(!empty($b)){
var_dump(get());
}else{
echo "no";//no
}
?>
型指定
先に、returnとemptyのところで説明したreturnで返す値だが、例えば、0は0でも、int型、string型、論理型と型を指定しないと色々な形になってしまう。
そこは、コード中にどのように使いたいかによって変わると思うが、便宜上統一させておきたいという場合には、あらかじめ型を指定しておけば、その心配はなくなる。
これについてはググれば出てきます。cf, PHP7 の関数の戻り値の型メモ
今回は、こんなところにしておく。