对于初入门的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() 可以判断指定函数是否被定义。

PHP中嵌套函数被调用时出现报错的问题的更多相关文章

  1. ThinkPHP 中入口文件中的APP_DEBUG为TRUE时不报错,改为FALSE时报错

    今天好不容易将一个新闻网做好了(ThinkPHP框架做的),但是,当我将入口文件中定义调试模式设为FALSE,即define('APP_DEBUG',False),然后再刷新网站的时候,就提示报错,报 ...

  2. 在IDEA中使用JDBC获取数据库连接时的报错及解决办法

    在IDEA中使用JDBC获取数据库连接时,有时会报错Sat Dec 19 19:32:18 CST 2020 WARN: Establishing SSL connection without ser ...

  3. 使用PHP + Apache访问有错误的php脚本时不报错

    遇到一个问题: 在命令行编辑php脚本后,直接使用php命令行执行该php脚本,如果脚本出现错误,在命令行的情况下会报错,显示错误信息,比如下面的情况. [root@localhost wwwroot ...

  4. php中读取中文文件夹及文件报错

    php读取时出现中文乱码 一般php输出中出现中文乱码我们可用 header ('content:text/html;charset="utf-8"'); php中读取中文文件夹及 ...

  5. javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决

    javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决 在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间,而在i ...

  6. asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理

    1.调用wsdl接口,首先需要将wsdl文件转换为cs文件: 进入VS 开发人员命令提示行,输入如下命令: c:/Program Files/Microsoft Visual Studio 8/VC& ...

  7. 【PostgreSQL】PostgreSQL添加新服务器连接时,报错“Server doesn't listen ”,已解决。

    PostgreSQL添加新的服务器连接时,报错:

  8. saltstack配置安装的一些关键步骤及安装时各种报错的分析

    以下其他仅做参考,官方网址才是安装重点:http://docs.saltstack.cn/topics/installation/rhel.html 与安装相关的一些文档或资料: 一.linux服务器 ...

  9. vue使用v-for时vscode报错 Elements in iteration expect to have 'v-bind:key' directives

    vue使用v-for时vscode报错 Elements in iteration expect to have 'v-bind:key' directives Vue 2.2.0+的版本里,当在组件 ...

随机推荐

  1. __attribute__的一些相关属性

    __attribute__((format()))  这个format有3个参数. int my(NSString *str,NSString *str1,NSArray*str2,...) __at ...

  2. CM记录-Hadoop 分布式文件系统HDFS(登录、配置、监控)

    1.登录(浏览器输入ip地址:7180,登录用户名和登录密码即可) 2.CM主界面(各个组件,监控图表,绿色代表运行正常.黄色代表运行不良,需要关注根据实际情况调整,红色代表故障,需要排查问题) 3. ...

  3. CM记录-选择合适的硬件

    hadoop的运行环境---hadoop/jvm/os/hw 原则1:主节点的可靠性要好于从节点:NameNode(Yarn-ResourceManager).DataNode(NodeManager ...

  4. Nginx 学习笔记(三)proxy_cache 缓存配置和ngx_cache_purge模块

    反向代理的缓存清理 一.proxy_cache配置 (1)如何配置和安装,都在这里了:https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Ng ...

  5. ipython 编辑器 jupyter notebook如何将 ipynb 转成 py 并在 jupyter notebook 中继续引用

    首先将 要被做成 module 的 ipython 代码 download as py 然后将 down 下来的 py 文件上传至 work 目录(也就是编写导入模块的py文件目录) 这部分 的 wo ...

  6. 12. SpringBoot国际化

    1).编写国际化配置文件: 2).使用ResourceBundleMessageSource管理国际化资源文件 3).在页面使用fmt:message取出国际化内容 步骤:1).编写国际化配置文件,抽 ...

  7. JS简史

    一.产生背景 1)在JavaScript问世之前,必须把表单数据发送到服务器端才能确定用户是否没有填写某个必填域,是否输入了无效的值: 2)为完成简单的表单验证而频繁地与服务器交换数据只会加重用户的负 ...

  8. Java基础编程题——素数

    package com.yangzl.basic; /** * 判断101-200之间有多少个素数,并输出所有素数. * @author Administrator * */ /*程序分析:判断素数的 ...

  9. sql server存储过程简单的使用

    --创建存储过程 create proc test_proc @date datetime as select * from t_user where times between ),),),),' ...

  10. luogu P1437 [HNOI2004]尻♂砖块

    传送门 想明白了其实不难 强行瞎扯 这题的限制比较烦,导致了一行行转移几乎不能做(吧) 那么一列列转移呢? 设\(f_{i,j,k}\)表示前\(i\)列,取\(j\)个,其中第\(i\)列取从上往下 ...