1. 程式人生 > 其它 >mysql查詢時函式的巢狀呼叫_解決PHP中巢狀函式被呼叫時出現報錯的問題

mysql查詢時函式的巢狀呼叫_解決PHP中巢狀函式被呼叫時出現報錯的問題

技術標籤:mysql查詢時函式的巢狀呼叫

de5156074475ed6209f5b6d35740fd88.png

php中文網最新課程

每日17點準時技術乾貨分享

4e98837a94ca5ef00749774414a0b813.png

666be68c6a9b199c744da0b8e0d225e1.gif

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

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

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

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

<?php function functionName1(){        function functionName2(){            echo "我是一個被巢狀的函式";        }    echo "我是一個函式";}functionName2();

此段程式碼我們通過瀏覽器訪問測試的結果如下圖:

5a15d9fc375786491826881d6ed660c7.png

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

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

<?php function functionName1(){        function functionName2(){            echo "我是一個被巢狀的函式";        }    echo "我是一個函式";}functionName1();functionName2();

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

d33a8d584bf6df36a71f2afedd818d94.png

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

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

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

<?php function functionName1(){        function functionName2(){            echo "我是一個被巢狀的函式";        }    echo "我是一個函式";}functionName1();functionName1();echo "
";functionName2();

通過瀏覽器訪問測試結果如下:

cb47c6d9b0add2582b844078cc954d6b.png

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

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

<?php // 當外部的函式沒有被呼叫時,內部的函式相當於不存在function functionName1(){    if (!function_exists('functionName2')){        function functionName2(){            echo "我是一個被巢狀的函式";        }    }    echo "我是一個函式";}functionName1();functionName1();echo "
";functionName2();

最後我們再通過瀏覽器訪問的測試結果如下圖:

f717c14e4ea55dbaf84e5fd97755791c.png

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

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

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

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

-END-

宣告:本文選自「php中文網」,搜尋「 phpcnnew 」即可關注!