関数の入れ子(ネスト)

関数の中で関数を定義することもできる。

使い方

関数は、すべて、グローバルスコープにあるので、関数の内部で定義した関数でも、関数の外部から呼び出すことができる。ただし、入れ子(ネスト)の外側の関数は、内側の関数よりも、先に呼び出さなければならない点に注意。

定義

function 関数A( 仮引数 ) {
    function 関数B( 仮引数 ) {
        関数B内処理文
    }
    関数A内処理文
}

関数を呼び出す際に「実引数」に指定した値を、「仮引数」で受け取ることができる。

呼び出し(コール)

関数Bよりも先に、関数Aを呼び出さなければならない。

関数A( 実引数 );
関数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 );
?>

↓↓↓出力結果↓↓↓

$varA + $varB = 8
$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 );
?>

↓↓↓出力結果↓↓↓

$varA + $varB = 8
$varC × $varD = 15

スポンサード リンク

カテゴリー: PHP, ユーザー定義関数 タグ: パーマリンク