STEP 6
22「無名関数」を
知る
◎慣れてからつかおう
この内容は、はじめのうちは、特に意識しなくとも大丈夫です。そういうのもあるんだなぁ程度で構いません。すぐ理解できなくとも、前にすすめましょう。
使われる状況としてはすくないです。
使用例としては
関数名がなくても困らない状況において
関数名を付けるのを省略したいとき
だったり
「呼び出す関数名」を引数として渡して実行したいとき
に使われます。
以下のような形式でつかわれます。
サンプルをみてみましょう。
サンプルコード
<?php
$func = function($str){
echo $str. "です";
};
$func("お寿司");
?>
実行結果
お寿司です
サンプルコードの解説
変数 $func に無名の関数 function がはいります。$func("お寿司") のような変数()で呼び出せます。この前提の上で、次のような方法が必要な場合があり、つかわれます。コールバック関数と呼ばれます。
ここでは説明はいったん割愛して、わかりやすくすると、「関数で関数をよぶやり方」です。
サンプルをみてみましょう。
サンプルコード
<?php
function func(){
return "ファンク!!";
}
function yobidashi($name){
echo "呼んだのは ".$name(). " です";
}
yobidashi("func");
?>
実行結果
呼んだのは ファンク!! です
サンプルコードの解説
今までは引数にデータ(値、文字列)を渡してきました。基本は今回も同じです。今回は「関数の名前」の文字列を渡しています。yobidashi関数では $name() となっています。ここで、渡されてきた引数の文字列である func と名前のついた関数が呼ばれています。func() がよばれ、文字が表示されました。
「呼び出す関数名を変数にいれてコントロールする」ことが必要になることがあります。
そのときにつかいます。
こんな使い方もできるよってぐらいです。はじめのうちは意識せずで構いません。関数を定義して使えば充分です。無名関数は慣れて、メリットが説明できるぐらいになってから使うといいと思います。
経験者のコードを読む機会にででくるかもしれません。内容を理解するのに役立ててください。
23「三項演算子」を
知る
◎慣れてからつかおう
この内容は、はじめのうちは、特に意識しなくとも大丈夫です。そういうのもあるんだなぁ程度で構いません。すぐ理解できなくとも、前にすすめましょう。
if文と同じ内容を短かくして作れる別の方法として「三項演算子」という構文があります。条件演算子とも呼ばれます。
次のような形式で書くことができます。
(条件式) ? 真の場合の式 : 偽の場合の式;
条件分岐から変数にいれるまでを1行で書くことができます。サンプルをみてみましょう。
サンプルコード
<?php
$eigo = "80";
$kekka = $eigo > 75 ? "合格" : "がんばろう";
echo $kekka;
?>
実行結果
合格
サンプルコードの解説
2択の結果を変数にしまうことを1行で達成できます。if文で書くこともできます。はじめのうちは、数行かかっても、わかりやすいif文で書くことができれば充分です。
経験者のコードでこの形式をみるかもしれません。読み方として役立てください。
◎普通にif文で書いたほうが簡潔で見やすい場合のほうが多いです。むりに三項演算子を使う必要はありません。こういった表記と処理の表現があると知る程度でも構いません。
24「NULL」を
知る
変数に値を持たないことを「NULL」と表します。変数にカラようなイメージを示すものに「0」「’’(文字なし)」「false」があります。
これらはすべて別々のデータです。そして、NULLもまた、これらとも異なります。
データが存在していない状態が「NULL」です。サンプルコードをみてみましょう。
サンプルコード
<?php
$atai;
if (is_null($atai)) {
echo 'NULLです';
}
?>
実行結果
NULLです
サンプルコードの解説
$ataiは変数はありますが、中身がありません。$ataiはNULLになっています。is_null()はNULLを判定する関数です。is_null関数は NULL であるため、trueを返しています。
◎NULLがでてくる例
代表的なPHPプログラムの使い方として、お問い合わせフォームがあります。HTMLフォームからの入力データを受け取り処理します。
複数の項目があるお問い合わせフォームを作るとした際、「必須で入力しなくてもよい項目」あるとします。
この「必須で入力しなくてもよい項目」は入力がないとき、NULLで渡ってきます。受け取る変数はNULLが入り、あとの処理がすすむことになります。
つづくプログラムコードで値なしの NULL を想定したコードになっていなければ、エラーが起こります。
このように、変数の値があるかないか、NULLかどうかが重要になってきます。
(補足)変数が空(カラ)ようなイメージを示すもの
変数に空(カラ)ようなイメージを示すものとして [0, "", false, NULL]ですが、厳密にはそれぞれ違うものです。気をつけたいのがif文の条件式です。サンプルコードをみてみましょう。
サンプルコード
<?php
$atai = NULL;
if($atai == 0) echo 'A';
if($atai == "") echo 'B';
if($atai == false) echo 'C';
if($atai == NULL) echo 'D';
if($atai === 0) echo 'E';
if($atai === "") echo 'F';
if($atai === false) echo 'G';
if($atai === NULL) echo 'H';
?>
実行結果
ABCDH
サンプルコードの解説
if文の「==」は厳密に判断してくれません。すべて通しています。「==」と「===」が混在するコードになると条件式が想定する機能をしていません。想定外の動きを起こすことになるため、注意と理解が必要です。