PHP8中自定义函数-PHP8知识详解
1、什么是函数?
函数,在英文中的单词是function,这个词语有功能的意思,也就是说,使用函数就是在编程的过程中,实现一定的功能。即函数就是实现一定功能的一段特定代码。
在前面的教学中,我们已经学习到了函数的使用了,比如,使用define()函数定义一个常量。在这里我们来讲解自定义函数。
任何有效的 php 代码都有可能出现在函数内部,甚至包括其它函数和 类 定义。
函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。可以用正则表达式表示为: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。
PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。
PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。

2、什么是自定义函数?
自定义函数是一种在编程中创建的用户自定义的功能代码块。它们允许程序员定义自己的函数,并根据需要在程序中调用它们。自定义函数可以接收参数,执行特定的任务,并返回一个值。
通过使用自定义函数,程序员可以将复杂的任务分解为更小的可重用代码块,提高代码的可读性和可维护性。自定义函数是编程中常用的概念,几乎在所有的编程语言中都有支持。在PHP8中也不例外。
3、定义和调用函数
一般情况下,程序员面对的是自定义函数。其语法结构如下:
function 函数名称(参数1,参数2,……){函数的具体内容;
}
函数定义完成以后,即可调用这个函数。调用函数的操作比较简单,直接引用函数名并赋予正确的参数,即可完成函数的调用。
<?php// 定义一个函数
function myfun($a, $b) {$sum = $a + $b;$product = $a * $b;// 返回求和和求积的结果作为数组return array($sum, $product);
}// 调用myfun()函数并输出结果
$results = myfun(10, 20);
echo "求和计算结果是: " . $results[0] . "<br>";
echo "求积的计算结果是: " . $results[1];?>
以上代码在PHP8中的运行结果为:
求和计算结果是: 30
求积的计算结果是: 200
4、函数中的变量作用域
所谓 变量作用域,是指特定变量在代码中可以被访问到的位置。在PHP8中,有6种基本变量作用域法则:
一、内置超全局变量。在代码中任意位置都能访问的变量。
二、常数。一旦声明,他就是全局性的,可以在函数的内外使用。
三、全局变量。在代码声明中,可以爱代码中访问,但是不能在函数内部访问。
四、在函数中声明为全局变量的变量。就是同名的全局变量。
五、在函数中创建和声明为静态变量的变量。该变量在函数外是无法访问的,但是这个静态变量的值是可以保留的。
六、在函数中创建和声明的局部变量。在函数外是无法访问的,并且在本函数终止时终止并推出。
4.1、超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:
$GLOBALS:它是一个包含了当前脚本中所有全局变量的数组。
$_SERVER:它是一个包含了服务器和执行环境信息的数组,如 HTTP 请求头、路径等。
$_GET:它是一个包含通过 GET 方法传递给当前脚本的参数和值的数组。
$_POST:它是一个包含通过 POST 方法传递给当前脚本的参数和值的数组。
$_FILES:它是一个包含上传文件的相关信息的数组,包括文件名、类型、大小等。
$_COOKIE:它是一个包含客户端发送的 Cookie 的相关信息的数组。
$_SESSION:它是一个包含用户会话数据的数组,用于存储特定用户在不同页面之间共享的数据。
$_REQUEST:它是一个包含了通过 HTTP 请求方法(GET、POST和COOKIES)传递给当前脚本的参数和值的数组。
$_ENV:它是一个包含环境变量的数组,这些变量是由操作系统或 web 服务器设置的。
请注意,对这些超全局变量进行直接引用可能存在安全性和可靠性问题。在使用时,请确保验证和过滤来自用户的输入以防止潜在的安全漏洞。
4.2、全局变量
全局变量就是在函数外声明的变量,在代码中可以访问,但是在函数内部是不能访问的。这是因为函数默认就不能访问起外部的全局变量。
函数内访问全局变量示范代码:
<?php
$a = "PHP"; //定义全局变量
function xuexi() { // 定义一个函数
echo "正在学习的是: " .$a; //函数内调用全局变量
}
xuexi(); //运行函数
?>
在PHP8中运行的结果为:
Warning: Undefined variable $a in D:\phpenv\www\localhost\test.php on line 4
正在学习的是:
上面内容明显是异常信息,如果想让函数访问某个全局变量,可以在函数中使用global关键字来声明。
使用global关键字访问全局变量,示例代码:
<?php
$a = "PHP"; //定义全局变量
function xuexi() { // 定义一个函数
global $a; //函数内声明全局变量
echo "正在学习的是: " .$a; //函数内调用全局变量
}
xuexi(); //运行函数
?>
在PHP8中运行的结果为:
正在学习的是: PHP
也可以使用超全局变量中的$GLOBALS数组进行访问。
使用$GLOBALS数组进行访问全局变量,示范代码:
<?php
$a = "PHP8"; //定义全局变量
function xuexi() { // 定义一个函数
$a = $GLOBALS["a"]; //通过$GLOBALS数组访问全局变量
echo "正在学习的是: " .$a; //函数内调用全局变量
}
xuexi(); //运行函数
?>
在PHP8中运行的结果为:
正在学习的是: PHP8
3、静态变量
静态变量只是在函数内存在,函数外无法访问。但是执行以后,其值会保留。
也就是说,这一次执行完毕以后,这个静态变量的值保留,下一次执行此函数,这个值还可以调用。
当在 PHP 8 中使用静态变量时,您可以在函数内部声明一个变量,并在后续的调用中保持其值不变。这样做可以在多次函数调用之间共享数据。
以下是一个示例代码:
<?php
function increment() {static $counter = 0;$counter++;echo "Counter value: " . $counter . "<br>";
}increment();
increment();
increment();
?>
以上代码在PHP8中运行的结果为:
Counter value: 1
Counter value: 2
Counter value: 3
在上面的代码中,我们定义了一个名为 $counter 的静态变量,并初始化为 0。每当 increment() 函数被调用时,该变量都会自增并输出当前计数器的值。
由于 $counter 是一个静态变量,在函数调用之间它的值得以保持和共享。因此,每次调用 increment() 都会使计数器递增。
相关文章:
PHP8中自定义函数-PHP8知识详解
1、什么是函数? 函数,在英文中的单词是function,这个词语有功能的意思,也就是说,使用函数就是在编程的过程中,实现一定的功能。即函数就是实现一定功能的一段特定代码。 在前面的教学中,我们已…...
虚拟化技术:云计算发展的核心驱动力
文章目录 虚拟化技术的概念和作用虚拟化技术的优势虚拟化技术对未来发展的影响结论 🎉欢迎来到AIGC人工智能专栏~虚拟化技术:云计算发展的核心驱动力 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈该系…...
光伏+旅游景区
传统化石燃料可开发量逐渐减少,并且对环境造成的危害日益突出。全世界都把目光投向了可再生能源,希望可再生能源能够改变人类的能源结构。丰富的太阳能取之不尽、用之不竭,同时对环境没有影响,光伏发电是近些年来发展最快…...
手搓文本向量数据库(自然语言搜索生成模型)
import paddle import jieba import pandas as pd import numpy as np import os from glob import glob from multiprocessing import Process, Manager, freeze_supportfrom tqdm import tqdm# 首先 确定的是输出的时候一定要使用pd.to_pickle() pd.read_pickle() # 计算的时…...
EVO大赛是什么
价格是你所付出的东西,而价值是你得到的东西 EVO大赛是什么? “EVO”大赛全称“Evolution Championship Series”,是北美最高规格格斗游戏比赛,大赛正式更名后已经连续举办12年,是全世界最大规模的格斗游戏赛事。常见…...
linux中使用clash代理
本机环境:ubuntu16 安装代理工具(这里使用clash) 可以手动下载解压,下载地址:https://github.com/Dreamacro/clash 也可以直接使用命令行,演示如下: userlocalhost:~$ curl https://glados.r…...
Kafka3.0.0版本——Follower故障处理细节原理
目录 一、服务器信息二、服务器基本信息及相关概念2.1、服务器基本信息2.2、LEO的概念2.3、HW的概念 三、Follower故障处理细节 一、服务器信息 三台服务器 原始服务器名称原始服务器ip节点centos7虚拟机1192.168.136.27broker0centos7虚拟机2192.168.136.28broker1centos7虚拟…...
13.redis集群、主从复制、哨兵
1.redis主从复制 主从复制是指将一台redis服务器(主节点-master)的数据复制到其他的redis服务器(从节点-slave),默认每台redis服务器都是主节点,每个主节点可以有多个或没有从节点,但一个从节点…...
linux字符串处理
目录 1 C 截取字符串,截取两个子串中间的字符串2 获取该字符串后面的字符串用 strstr() 函数查找需要提取的特定字符串,然后通过指针运算获取该字符串后面的字符串用 strtok() 函数分割字符串,找到需要提取的特定字符串后,调用 strtok() 传入…...
Nginx入门——Nginx的docker版本和windows版本安装和使用 代理的概念 负载分配策略
目录 引出nginx是啥正向代理和反向代理正向代理反向代理 nginx的安装使用Docker版本的nginx安装下载创建挂载文件获取配置文件创建docker容器拷贝容器中的配置文件删除容器 创建运行容器开放端口进行代理和测试 Windows版本的使用反向代理多个端口运行日志查看启动关闭重启 负载…...
Zebec Protocol:模块化 L3 链 Nautilus Chain,深度拓展流支付体系
过去三十年间,全球金融科技领域已经成熟并迅速增长,主要归功于不同的数字支付媒介的出现。然而,由于交易延迟、高额转账费用等问题愈发突出,更高效、更安全、更易访问的支付系统成为新的刚需。 此前,咨询巨头麦肯锡的一…...
Oracle-rolling upgrade升级19c
前言: 本文主要描述Oracle11g升19c rolling upgrade升级测试,通过逻辑DGautoupgrade方式实现rolling upgrade,从而达到在较少停机时间内完成Oracle11g升级到19c的目标 升级介绍: 升级技术: rolling upgrade轮询升级,通过采用跨版…...
Spring IOC详解
Spring 笔记 官网:https://spring.io/ 核心功能:当你的项目启动的时候,自动的将当前项目的各种 Bean 都自动的注册到 Spring 容器中,然后在项目的其他地方,如果需要用到这些 Bean,直接去 Spring 容器中查…...
Unity——DOTween插件使用方法简介
缓动动画既是一种编程技术,也是一种动画的设计思路。从设计角度来看,可以有以下描述 事先设计很多基本的动画样式,如移动、缩放、旋转、变色和弹跳等。但这些动画都以抽象方式表示,一般封装为程序函数动画的参数可以在使用时指定&…...
数据库——Redis 单线程模型详解
文章目录 Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 (Netty 的线程模型也基于 Reactor 模式,Reactor 模式不愧是高性能 IO 的基石),这套事件处理模型对应的是 Redis 中的文件事件处理器(file …...
leetcode 567. 字符串的排列(滑动窗口-java)
滑动窗口 字符串的排列滑动窗口代码演示进阶优化版 上期经典 字符串的排列 难度 -中等 leetcode567. 字符串的排列 给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。 换句…...
Git —— 分支重命名操作
在开发中,对某个分支进行重命名的操作: 1、本地分支重命名 本地分支是指:你当前这个分支还没有推送到远程的情况,这种情况修改分支名称就要方便很多 git branch -m 原始名称 新名称 //示例: 修改 test 为 newTest g…...
JavaIO流
JavaIO流 一、概念二、File类三、File类的使用1、File文件/文件夹类的创建2、File类的获取操作3、File类判断操作 - boolean4、File类对文件/文件夹的增删改5、File类的获取子文件夹以及子文件的方法 四、Java中IO流多种维度的维度1、按照流向 - Java程序2、按照流的大小分类3、…...
FlinkSql 如何实现数据去重?
摘要 很多时候flink消费上游kafka的数据是有重复的,因此有时候我们想数据在落盘之前进行去重,这在实际开发中具有广泛的应用场景,此处不说详细代码,只粘贴相应的flinksql 代码 --********************************************…...
机器学习概念
目录 一、人工智能、机器学习、深度学习的关系 二、什么是深度学习? 2.1 深度学习常用算法 一、人工智能、机器学习、深度学习的关系 人工智能、机器学习和深度学习的关系如下所示。 二、什么是深度学习? 深度学习( DL, Deep Learning) 是机器学习 …...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
