関数の中で関数を定義することもできる。
使い方
関数は、すべて、グローバルスコープにあるので、関数の内部で定義した関数でも、関数の外部から呼び出すことができる。ただし、入れ子(ネスト)の外側の関数は、内側の関数よりも、先に呼び出さなければならない点に注意。
定義
function 関数A( 仮引数 ) {
function 関数B( 仮引数 ) {
関数B内処理文
}
関数A内処理文
}
function 関数B( 仮引数 ) {
関数B内処理文
}
関数A内処理文
}
関数を呼び出す際に「実引数」に指定した値を、「仮引数」で受け取ることができる。
呼び出し(コール)
関数Bよりも先に、関数Aを呼び出さなければならない。
関数A( 実引数 );
関数B( 実引数 );
関数B( 実引数 );
関数に渡したい値を、「実引数」に指定することができる。実引数は、カンマ「,」で区切り、複数指定することもできる。
サンプル
関数の内部で定義した関数を、外部から呼び出し
<?php
function sampleA( $varA, $varB ) {
echo '<p>$varA + $varB = ' , $varA + $varB, '</p>';
function sampleB( $varC, $varD ) {
echo '<p>$varC × $varD = ' , $varC * $varD, '</p>';
}
}
sampleA( 5, 3 );
sampleB( 5, 3 );
?>
function sampleA( $varA, $varB ) {
echo '<p>$varA + $varB = ' , $varA + $varB, '</p>';
function sampleB( $varC, $varD ) {
echo '<p>$varC × $varD = ' , $varC * $varD, '</p>';
}
}
sampleA( 5, 3 );
sampleB( 5, 3 );
?>
↓↓↓出力結果↓↓↓
$varA + $varB = 8
$varC × $varD = 15
$varC × $varD = 15
関数の内部で定義した関数を、内部で呼び出し
<?php
function sampleA( $varA, $varB ) {
echo '<p>$varA + $varB = ' , $varA + $varB, '</p>';
function sampleB( $varC, $varD ) {
echo '<p>$varC × $varD = ' , $varC * $varD, '</p>';
}
sampleB( 5, 3 );
}
sampleA( 5, 3 );
?>
function sampleA( $varA, $varB ) {
echo '<p>$varA + $varB = ' , $varA + $varB, '</p>';
function sampleB( $varC, $varD ) {
echo '<p>$varC × $varD = ' , $varC * $varD, '</p>';
}
sampleB( 5, 3 );
}
sampleA( 5, 3 );
?>
↓↓↓出力結果↓↓↓
$varA + $varB = 8
$varC × $varD = 15
$varC × $varD = 15