1. 对于初入门的PHP新手来说,在学习关于PHP函数嵌套的知识点时可能会有一定的难度。比如有的朋友在练习PHP函数嵌套相关问题时,会遇到调用内部函数时就会出现报错的情况等。
  2. 那么本篇文章就为大家详细得分析介绍关于PHP中特殊函数嵌套函数的处理问题。
  3.  
  4. 下面我们通过具体的代码示例,给大家进行详解。
  5.  
  6. 首先我们创建一段PHP嵌套函数代码示例如下:
  7.  
  8. <?php
  9. function functionName1()
  10. {
  11. function functionName2(){
  12. echo "我是一个被嵌套的函数";
  13. }
  14. echo "我是一个函数";
  15. }
  16.  
  17. functionName2();
  18.  
  19. 此段代码我们通过浏览器访问测试的结果如下图:
  20.  
  1. 如图出现了functionName2函数未被定义的报错,这种情况怎么处理呢?
  2.  
  3. 下面我们在上述代码的基础上,再调用functionName1这个函数,代码如下:
  4. <?php
  5. function functionName1()
  6. {
  7. function functionName2(){
  8. echo "我是一个被嵌套的函数";
  9. }
  10. echo "我是一个函数";
  11. }
  12. functionName1();
  13. functionName2();
  14. 我们再通过浏览器测试,结果就如下图:
  15.  
  1. 此时内部函数functionName2就能被成功调用了。
  2.  
  3. 那么如果我们在一个页面多次调用外部函数,又会有什么情况呢?
  4.  
  5. 下面我们再在上述的代码基础上,调用两次functionName1函数,代码如下:
  6. <?php
  7. function functionName1()
  8. {
  9. function functionName2(){
  10. echo "我是一个被嵌套的函数";
  11. }
  12. echo "我是一个函数";
  13. }
  14. functionName1();
  15. functionName1();
  16. echo "<br>";
  17. functionName2();
  18. 通过浏览器访问测试结果如下:
  19.  
  1. 如图出现了不能重新定义functionName2函数的报错,怎么解决避免这样的错误呢?
  2.  
  3. 这里我们就需要用到if判断语句,那么完整的代码示例如下:
  4. <?php
  5. // 当外部的函数没有被调用时,内部的函数相当于不存在
  6. function functionName1()
  7. {
  8. if (!function_exists('functionName2')){
  9. function functionName2(){
  10. echo "我是一个被嵌套的函数";
  11. }
  12. }
  13. echo "我是一个函数";
  14. }
  15. functionName1();
  16. functionName1();
  17. echo "<br>";
  18. functionName2();
  19. 最后我们再通过浏览器访问的测试结果如下图:
  20.  
  1. 综上所述,我们可以得出一些重要结论:
  2.  
  3. 1、当外部函数没有被调用时,内部的函数就相当于不存在,否则直接调用就会出现上述中函数未定义的错误。
  4.  
  5. 2、当调用多次外部函数时,就需要用一个判断语句来声明嵌套函数,否则就会出现不能重新被定义的错误。
  6.  
  7. 注: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. 【Maven】安装配置、目录结构、配置文件、常见命令

    1.下载配置maven步骤 a.windows下配置jdk的系统环境变量:java_home b.windows下配置maven的系统环境变量:maven_home或者m2_home c.window ...

  2. 2018acm-icpc宁夏邀请赛后记

    由于要准备期末考试的缘故,时隔一个月之后我才想起来还有一场比赛没有总结. 大概是出去过的最远的地方了,宁夏理工学院离杭州有两千多千米. 不得不说感到了主办方满满的诚意,虽然是第一次办比赛,但是第一天组 ...

  3. elasticsearch 动态模板设置

    自定义动态映射 如果你想在运行时增加新的字段,你可能会启用动态映射.然而,有时候,动态映射 规则 可能不太智能.幸运的是,我们可以通过设置去自定义这些规则,以便更好的适用于你的数据. 日期检测 当 E ...

  4. jenkins ansible 附zabbix_agent批量安装示例

    插件:Ansible plugin 一.ansible ad-hoc command 二.ansible-playbook 批量部署zabbix-agent示例: playbook 目录及文件组成 [ ...

  5. sql server复制数据到excel格式变成字符串

    sql server复制数据到excel格式变成字符串,结果数据都保存在第一个格子里面. 我点击连同标题一起复制,然后粘贴到excel,结果是这样子的.... 这不是我想要的结果,在网上查询了好多,结 ...

  6. Linux命令之cp

    cp命令 用处:复制文件到当前目录下 用法:cp +要复制的文件的路径 + 复制后的文件名字 示例: (我这里有一个m1文件,内容是qwer,我想把它复制一份成为m2)

  7. JavaSE学习总结(十六)—— 泛型与泛型应用

    一.泛型概要 泛型(Generic)的本质是类型参数化,通俗的说就是用一个占位符来表示类型,这个类型可以是String,Integer等不确定的类型,表明可接受的类型. 泛型是Java中一个非常重要的 ...

  8. JavaSE学习总结(三)——Java语言编程练习、格式化字符与常量

    一.变量.常量.字面量 package com.zhangguo.chapter2_3; /** * 1.银行利率为5%,问存款100美元5年的收益细节? * */ public class P1 { ...

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

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

  10. Study 8 —— 行块元素及定位

    行&块元素display:inline;display:block;display:inline-block; 盒模型padding[内边距]padding: 上下内边距 左右内边距;padd ...