クロージャ
クロージャとは関数の一種で,
クロージャは関数がアクセス可能な変数が,
クロージャの使い方
クロージャはラムダ関数,
クロージャに慣れていない方は,
クロージャの構文は次のように,
PHP以外の言語では, 無名関数の中から無名関数が実行されるスコープ内の変数を使用する場合には, 多少面倒に思うかも知れませんが, 無名関数は関数名が無いので, 例:無名関数を変数から利用する 出力 これだけでは何が便利なのかさっぱり分からないですが, の部分が無名関数の定義です。無名関数は直接パラメータとしてほかの関数に渡すことが出来ます。 例:無名関数を利用してarray_ 出力 無名関数が無いPHP 5. を別の関数として定義した上で, 例:無名関数を利用しない方法 あまり, 無名関数を使うと, 例:処理を無名関数として渡す 変数関数に書き換えると次のようになります。 例:変数関数の場合 どちらも全く同じことができますが, ‘square_
<?php
$writeline = function($msg) { echo $msg.PHP_EOL; };
$writeline('ABC');
$writeline('XYZ');
?>
ABC
XYZ
function($msg) { echo $msg.PHP_EOL; };
<?php
$fruits = array("lemon"=>156, "orange"=>210, "banana"=>180, "apple"=>343);
array_walk($fruits,function($price,$name) { echo $name.':'.$price.PHP_EOL; });
?>
lemon:156
orange:210
banana:180
apple:343
function($price,$name) { echo $name.':'.$price.PHP_EOL;}
<?php
$fruits = array("lemon"=>156, "orange"=>210, "banana"=>180, "apple"=>343);
function callback($price,$name) { echo $name.':'.$price.PHP_EOL; }
array_walk($fruits,'callback');
?>
<?php
$square = function($x) { return ($x * $x); };
$increment = function($x) { return ++$x; };
function foo($param, $op) {
return $op($param);
}
echo foo(3, $square) . PHP_EOL;
echo foo(4, $increment) . PHP_EOL;
?>
<?php
function square($x) { return ($x * $x); }
function increment($x) { return ++$x; };
function foo($param, $op) {
return $op($param);
}
echo foo(3, 'square') . PHP_EOL;
echo foo(4, 'increment') . PHP_EOL;
?>