首頁  >  文章  >  每日程式設計  >  怎麼解決PHP中巢狀函數被呼叫時出現報錯的問題? (圖文+影片)

怎麼解決PHP中巢狀函數被呼叫時出現報錯的問題? (圖文+影片)

藏色散人
藏色散人原創
2018-09-17 17:30:164152瀏覽

對於初入門的PHP新手來說,在學習關於PHP函數嵌套的知識點時可能會有一定的難度。例如有的朋友在練習PHP函數巢狀相關問題時,會遇到呼叫內部函數時就會出現報錯的情況等。

那麼這篇文章就為大家詳細得分析介紹關於PHP中特殊函數巢狀函數的處理問題。

下面我們透過具體的程式碼範例,給大家進行詳解。

首先我們建立一段PHP巢狀函數程式碼範例如下:

<?php
function functionName1()
{ 
        function functionName2(){
            echo "我是一个被嵌套的函数";
        }   
    echo "我是一个函数";
}
functionName2();

此段程式碼我們透過瀏覽器存取測試的結果如下圖:

怎麼解決PHP中巢狀函數被呼叫時出現報錯的問題? (圖文+影片)

如圖出現了functionName2函數未被定義的報錯,這種情況怎麼處理呢?

下面我們在上述程式碼的基礎上,再呼叫functionName1這個函數,程式碼如下:

<?php
function functionName1()
{ 
        function functionName2(){
            echo "我是一个被嵌套的函数";
        }   
    echo "我是一个函数";
}
functionName1();
functionName2();

我們再透過瀏覽器測試,結果就如下圖:

怎麼解決PHP中巢狀函數被呼叫時出現報錯的問題? (圖文+影片)

#此時內部函數functionName2就能被成功呼叫了。

那麼如果我們在一個頁面多次呼叫外部函數,又會有什麼情況呢?

下面我們再在上述的程式碼基礎上,呼叫兩次functionName1函數,程式碼如下:

<?php
function functionName1()
{ 
        function functionName2(){
            echo "我是一个被嵌套的函数";
        }   
    echo "我是一个函数";
}
functionName1();
functionName1();
echo "<br>";
functionName2();

透過瀏覽器存取測試結果如下:

怎麼解決PHP中巢狀函數被呼叫時出現報錯的問題? (圖文+影片)

如圖出現了不能重新定義functionName2函數的報錯,要怎麼解決避免這樣的錯誤呢?

這裡我們就需要用到if判斷語句,那麼完整的程式碼範例如下:

<?php
// 当外部的函数没有被调用时,内部的函数相当于不存在
function functionName1()
{
    if (!function_exists(&#39;functionName2&#39;)){
        function functionName2(){
            echo "我是一个被嵌套的函数";
        }
    }
    echo "我是一个函数";
}
functionName1();
functionName1();
echo "<br>";
functionName2();

最後我們再透過瀏覽器存取的測試結果如下圖:

怎麼解決PHP中巢狀函數被呼叫時出現報錯的問題? (圖文+影片)

綜上所述,我們可以得到一些重要結論:

1、當外部函數沒有被呼叫時,內部的函數就相當於不存在,否則直接呼叫就會出現上述中函數未定義的錯誤。

2、當呼叫多次外部函數時,就需要用一個判斷語句來宣告巢狀函數,否則就會出現不能重新被定義的錯誤。

附註:function_exists() 可以判斷指定函數是否被定義。

想要了解更多PHP相關知識,大家可以關注PHP中文網PHP影片教學。歡迎大家來參考學習!

以上是怎麼解決PHP中巢狀函數被呼叫時出現報錯的問題? (圖文+影片)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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