return falseの意味

home

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で空判定されるのは以下の通り。

“" (空文字列)
0 (整数 の 0)
0.0 (浮動小数点数の 0)
“0" (文字列 の 0)
NULL
FALSE
array() (空の配列)

https://www.php.net/manual/ja/function.empty.php(2020/04/18)

以下で、各々についてみていく。
特に真新しさは無いけど、それぞれ何を返すのかが分かる。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 の関数の戻り値の型メモ

今回は、こんなところにしておく。

php

Posted by himajinn