首頁  >  文章  >  後端開發  >  PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?

PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?

慕斯
慕斯原創
2021-06-04 17:59:363108瀏覽

上篇文章為大家介紹了《什麼是回呼函數?怎麼定義的?其作用是什麼? (詳解及實例)》,本文繼續介紹PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?本篇文章,將會讓你們有不一樣的收穫,一起去繼續探索PHP的奧秘吧! ! !

PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?

什麼是內部函數:

#在函數內部宣告的函數就是內部函數;

#具體我們以程式碼為例:

<?php
    //内部函数
    function outer(){
    //在outer函数内部在定义一个函数(内部函数)
    function inner(){
      echo &#39;千帆过尽,回首当年,那份纯净的梦想早已渐行渐远,如今岁月留下的,只是满目荒凉&#39;;
    }
    }
    //内部函数如何调用
    inner();
?>

程式碼解析:

首先,我們先定義一個函數outer(),緊接著我們在outer函數的內部再次定義一個函數,此時我們定義的函數就是內部函數,其次我們輸出(echo)一推字串,

然而,我們如何呼叫內部函數,首先,我們直接呼叫inner(),運行結果顯示報錯,呼叫了未定義的inner(),但是我們看到上述程式碼,我們可以知道,我們已經定義過了,因此我們可以說明,內部函數在外部不能夠直接呼叫。

PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?

<?php
/******内部函数*****/
function outer(){
//在outer函数内部再次定义个函数 (内部函数)
function inner(){
echo  &#39;千帆过尽,回首当年,那份纯净的梦想早已渐行渐远,如今岁月留下的,只是满目荒凉&#39; ;
}
 inner();
}
//内部函数如何调用
//inner();内部函数在外部无法直接调用
//内部函数在函数内部如何调用是否有先后顺序
outer();
?>

然而當我們在函數內部呼叫inner(),如果我們想讓它正常執行,我們只需呼叫outer()即可,即可得到我們輸入的結果:如下圖:

PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?

如果我們把inner()放在定義函數的上面結果什麼樣子呢?

根據結果顯示,不能呼叫未定義的inner()

<?php
/******内部函数*****/
function outer(){
//在outer函数内部再次定义个函数 (内部函数)
inner();
function inner(){
echo  &#39;千帆过尽,回首当年,那份纯净的梦想早已渐行渐远,如今岁月留下的,只是满目荒凉&#39; ;
}
}
//内部函数如何调用
//inner();内部函数在外部无法直接调用
//内部函数在函数内部如何调用是否有先后顺序
outer();
?>

PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?

因此我們了解到,inter()不能調用,因為PHP解析器知識預先載入函數,並沒有執行outer函數,所以不知道內部情況;

當內部函數在外部函數時,又是如何調用的?

<?php
/******内部函数*****/
function outer(){
//在outer函数内部再次定义个函数 (内部函数)
function inner(){
echo  &#39;千帆过尽,回首当年,那份纯净的梦想早已渐行渐远,如今岁月留下的,只是满目荒凉&#39; ;
}
}
//内部函数如何调用
//inner();内部函数在外部无法直接调用
//内部函数在函数内部如何调用是否有先后顺序
//outer();
//内部函数在外部函数,如何调用
outer();
inner();
?>

程式碼解析:

如果我們想要讓外部函數生效,要先呼叫outer(),當我們有了內部函數之後,我們在呼叫inner()函數的調用,我們會發現也會出現我們所要輸出的內容;

PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?

#根據上述文章內容,我們總結如下(內部函數和外部函數的區別是):

1.在函數外部是否可以呼叫部函數?

不可以直接調用,但是如果調用外部函數之後,就可以任意調用內部函數
2.在函數內部是否可以調用內部函數?
可以調用, 但是必須在內部函數定義之後調用,因為PHP解析器只會載入外部函數並不會執行外部函數,所以不知道外部函數中還有
內部函數。

推薦學習:《PHP影片教學

以上是PHP中什麼是內部函數?其調用方式是?和外部函數的差別是?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn