zoukankan      html  css  js  c++  java
  • PHP中嵌套函数被调用时出现报错的问题

    对于初入门的PHP新手来说,在学习关于PHP函数嵌套的知识点时可能会有一定的难度。比如有的朋友在练习PHP函数嵌套相关问题时,会遇到调用内部函数时就会出现报错的情况等。
    那么本篇文章就为大家详细得分析介绍关于PHP中特殊函数嵌套函数的处理问题。
    
    下面我们通过具体的代码示例,给大家进行详解。
    
    首先我们创建一段PHP嵌套函数代码示例如下:
    
    <?php
    function functionName1()
    { 
            function functionName2(){
                echo "我是一个被嵌套的函数";
            } 
        echo "我是一个函数";
    }
    
    functionName2();
    
    此段代码我们通过浏览器访问测试的结果如下图:
    
    
    
    如图出现了functionName2函数未被定义的报错,这种情况怎么处理呢?
    
    下面我们在上述代码的基础上,再调用functionName1这个函数,代码如下:
    <?php
    function functionName1()
    { 
            function functionName2(){
                echo "我是一个被嵌套的函数";
            }   
        echo "我是一个函数";
    }
    functionName1();
    functionName2();
    我们再通过浏览器测试,结果就如下图:
    
    
    此时内部函数functionName2就能被成功调用了。
    
    那么如果我们在一个页面多次调用外部函数,又会有什么情况呢?
    
    下面我们再在上述的代码基础上,调用两次functionName1函数,代码如下:
    <?php
    function functionName1()
    { 
           function functionName2(){
                echo "我是一个被嵌套的函数";
            }   
        echo "我是一个函数";
    }
    functionName1();
    functionName1();
    echo "<br>";
    functionName2();
    通过浏览器访问测试结果如下:
    
    
    如图出现了不能重新定义functionName2函数的报错,怎么解决避免这样的错误呢?
    
    这里我们就需要用到if判断语句,那么完整的代码示例如下:
    <?php
    // 当外部的函数没有被调用时,内部的函数相当于不存在
    function functionName1()
    {
        if (!function_exists('functionName2')){
            function functionName2(){
                echo "我是一个被嵌套的函数";
            }
        }
        echo "我是一个函数";
    }
    functionName1();
    functionName1();
    echo "<br>";
    functionName2();
    最后我们再通过浏览器访问的测试结果如下图:
    
    
    综上所述,我们可以得出一些重要结论:
    
    1、当外部函数没有被调用时,内部的函数就相当于不存在,否则直接调用就会出现上述中函数未定义的错误。
    
    2、当调用多次外部函数时,就需要用一个判断语句来声明嵌套函数,否则就会出现不能重新被定义的错误。
    
    注:function_exists() 可以判断指定函数是否被定义。
  • 相关阅读:
    CSU1090 数字转换问题[BFS+素数筛选]
    HDOJ2083 简易版之最短距离
    HOJ11525 Matchsticks
    HDOJ1058 Humble Numbers[DP]
    Sort函数进行升序和降序排列[#include <algorithm>]
    HDOJ1018 求N!的位数[斯特林公式处理阶乘及阶乘位数的问题]
    HDOJ1597 find the nth digit[一元二次方程求解]
    HOJ10641 Equidivisions [BFS]
    HOJ10814 Wooden Sticks[线性DP求最少不递增子序列+结构体排序]
    HOJ12363 Robots on a grid [DP+BFS()]
  • 原文地址:https://www.cnblogs.com/sgm4231/p/9726697.html
Copyright © 2011-2022 走看看