PHP 学習 part. 5
制御構造と関数
制御構造と関数の続きです。
goto
goto 文は使用しない方が良いという見方がありますが、適切に使えば問題ないと思います。
label 付き for 文のような使い方ができます。
<?php for ($i = 1; $i < 10; $i++) { for ($j = 1; $j < 10; $j++) { echo $i * $j, PHP_EOL; if (($j * $j) % 12 == 0) goto loop; } loop: echo $i * $j, PHP_EOL; }
関数
関数は、function を付けて定義します。
<?php function factorial($n) { if ($n == 1) return 1; return $n * factorial($n - 1); } echo factorial(5), PHP_EOL; // 120
引数の型を指定
関数に渡す引数の型を指定するタイプヒンティングを行います。
$a = array(1, 2, 3); dispArray($a); dispArray(1); // エラー
コールバック関数
あまり使ったことがない機能ですが、コールバック関数について学びます。
<?php function add($v1, $v2) { return $v1 + $v2; } class Math { public function mul($v1, $v2) { return $v1 * $v2; } public static function add($v1, $v2) { return $v1 + $v2; } } // コールバック関数 echo call_user_func('add', 1, 2), PHP_EOL; // static メソッドの場合、クラス名を文字列で指定できる echo call_user_func(array("Math", "add"), 1, 6), PHP_EOL; echo call_user_func("Math::add", 2, 5), PHP_EOL; // インスタンスを指定 $math = new Math(); echo call_user_func(array($math, 'mul'), 5, 7), PHP_EOL; // 引数に配列を指定 $v = array(5, 7); echo call_user_func_array('add', $v), PHP_EOL;
Unity とかで使った覚えがありますね。
本
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログを見る