php的基础知识(三)
12、函数:
函数的功能:
定义:在真实的项目开发过程中,有些代码会重复利用,我们可以把它提出来,做成公共的代码,供团队来使用,这个我们封装的代码段,就是函数(功能)。
优点:
1、提高代码的利用率。
2、减少开发时间。
3、减少代码冗余。
4、可维护性提高。
5、方便调试代码。
函数的定义格式:
function 函数名(参数1 = 值1,参数2 = 值2,参数3 = 值3,。。。。。。。。。)
{
函数体代码
return 返回值
}
类别:
类库函数:
is_null () ,is_array (),is_string ();
自定义函数:
(就是我们自己写的函数,根据项目开发过程当中,咱们根据需求自己编写出来的函数,可以供大家一起使用。)
【function】:
定义函数的关键字。
函数命名规范:
与咱们的变量名几乎一样
1、函数名不区分大小写。
2、函数名字使用英文,遵循规范。
3、数字可以夹在中间或者后面。
4、下划线不属于特殊符号。
5、不用特殊符号。
6、命名的时候要有意义。
7、遵循驼峰或者下划线。
8、不能使用系统给咱们的函数名还有系统的关键字。
基本格式:
1、函数都要以关键字function 开始。
2、函数名后面要紧跟小括号
3、小括号下面跟着大括号,大括号后面是函数体。
4、函数调用需要函数名加上小括号;
没有参数,没有返回值。
有参数,没有返回值。
function show($name = '张三' ,$val = '程序员') //$name = '',$val = '';
{
echo '我的名字是'.$name.'我的职业是'.$val.'<br />';
}
参数就是:name,val
如果你写多个的话,用逗号隔开,可以写多个,没有上限。
就相当于 张三 赋值给name。
有参数有返回值
重点:
return:
只是返回并没有输出。
return后面代码不执行
return:
1、return关键字只要碰到立马结束,后面代码统统不执行。
2、如果你想有多个返回值的时候,用数组去弄。
3、函数调用表达式的值就是函数的返回值。
默认参数:
1、默认参数就是不传参的时候用的那个变量。
2、如果你传了参数,就用传过来的值。
3、如果形参带有默认参数,一般放到后面。
4、如果没有默认参数,你必须给参数传值,不然会报错。(js不是)
注意事项:
1、函数必须要function开始定义。
2、function后面加空,加函数名,加空格,加小括号。
3、函数名和变量名字命名规则基本一样,唯一不一样的是,不区分大小写。
4、函数名后面跟括号,括号里面跟参数(就是变量)。
5、如果有默认参数,用等号,等号后面是你要跟的值。
6、调用函数的时候里面传入的值(实参),就是把函数体外的变量的值拿到函数体内来使用。
7、函数体外的变量和函数体内的变量通常不是一个变量。
8、函数可以有返回值,也可以没有返回值,你如果想返回的话,你用return 关键字返回。
9、函数的调用跟你定义的顺序没有半毛钱关系,但是变量不是。
10、函数可以多次调用,没有事。
<?php
function name() {
echo '这首歌真好听';}
name ();
echo '<br />';
function info($name = '李四',$val = '程序员') {
echo '我的名字是'.$name.'我的职业是'.$val.'<br />';}
info ();
function show($name = '张三',$val = '医生') {
echo '他的名字是'.$name.'他的职业是'.$val.'<br />';}
show ();
function info2($name = '王五',$val = '警察') {
echo '我的名字是'.$name.'职业是'.$val.'<br />';}
info2 ('赵六','教师');
?>
<?php
function say ($name = '张三',$age = 11,$sex = '男') {
echo '性名:'.$name.'<br />';
echo '年龄:'.$age.'<br />';
echo '性别:'.$sex.'<br />';
return '这是我的简介。';
echo 111;}
echo say ('李四');
?>
超全局变量:
<?php
function say () {
var_dump($GET);}
var_dump($GET);
say();
?>
静态变量:
<?php
function sum () {
$num = 1;
$num++;
echo $num;}
sum ();
sum ();
sum ();
sum ();
echo '<br />';
function sum1 () {
static $num = 1;
$num++;
echo $num;}
sum1 ();
sum1 ();
sum1 ();
sum1 ();
?>
形参和返回值的类型的约束:
function sum (int $num1, int $num2) //形参的;
{
return $num1+$num2;
}
sum(2,3);
//小括号后面加上:加上数值类型,把函数体返回的值给转成你限定的类型。
匿名函数:
所谓的匿名函数就是没有名字。
//如果你想用,赋值给一个变量,然后该怎么调用就怎么调用,变量加上(),跟普通函数调用一样。
$func = function () {}
$func();
<?php
function sum1($num1,$num2){
return $num1+$num2;}
var_dump(sum(1,2));
echo '<br />';
function sum2($num1,$num2){
return $num1+$num2;}
var_dump(sum('1','2'));
echo '<br />';
function test(...$arr) {
var_dump($arr);}
test('abc',1,2,3,123,'cc');
echo '<br />'
function test1 ($a,$b,$c,$d) {
var_dump ($a,$b,$c,$d);}
$arr = [1,'wang',1.87,'big'];
test1(...$arr);
echo '<br />';
$func = function () {
echo '匿名函数';};
$func (); ?>
13、常用函数:
数学函数:
1、随机:rand,mt_rand
2、小数:floor:向上取整;
ceil:向下取整;
round:四舍五入法取整;
3、其他:abs:绝对值;
pi:圆周率;
M_PI:常量,与pi()函数的返回值相同;
pow:指数表达式;
max:最大值;
min:最小值;
字符串函数:
1、大小写转换:
strtolower:转换为小写;
strtoupper:转换为大写;
lcfirst:首字母小写;
ucfirst:首字母大写;
ucwords:每个单词首字母大写;
2、空白处理:
trim:去掉首尾的空白字符;
ltrim:去掉开头的空白字符;
rtrim/chop:去掉结尾的空白字符;
3、查找定位:
strstr/strchr:返回首次出现到结尾的内容;
strrchr:返回最后一次出现到结尾的内容;
stristr:strstr忽略大小写的版本;
strpos:返回首次出现的位置;
stripos:strpos忽略大小写版本;
strrpos:返回最后一次出现的位置;
strripos:strrpos忽略大小写版本;
substr:子串提取,可以通过下标方式获取单个字符($str{n});
strpbrk:返回(字符列表中任意字符)首次出现到结尾的内容;
4、比较:
strcmp:二进制比较字符串;
strcasecmp:strcmp忽略大小写;
strnatcmp:自然顺序比较;
strnatcasecmp:strnatcmp的忽略大小写版本;
5、顺序:
str_shuffile:打乱顺序;
strrev:逆序字符串;
6、转换:
chr:将ASCⅡ码值转换为字符;
ord:返回字符串的ASCⅡ码值;
数组常用函数:
1、数组中元素指针的移动:
next:向后移动,指向下一个元素;
prev:向前移动,指向前一个元素;
end:指向最后一个元素;
reset:复位,重新指向第一个元素;
2、键和值相关的操作:
key:获取数组当前元素的键;
current/pos:获取数组当前元素的值;
array_keys:获取所有的键;
array_values:获取所有的值,并为其建立数字索引;
array_key_exists/key_exists:判断给定的键是否在数组中;
in_array:判断给定的值是否在数组中;
array_search:根据值返回给定的键名;
array_count_values:统计数组中所有的值出现的次数;
3、添加删除元素:
array_shift:将数组开头的元素移出数组;
array_unshift:向数组开头添加一个或更多个元素;
array_push:向数组末尾压入一个或多个元素;
array_pop:弹出数组末尾的一个元素;
4、排序相关:
shuffile:将数组打乱(转换为索引数组);
sort:对数组进行排序(排序之后重新索引);
resort:对数组进行逆向排序;
asort:对数组进行排序并保持索引关系;
natsort:用自然顺序算法对数组进行排序;
natcasesort:natsort忽略大小写的版本;
ksort:对数组按照键名进行排序;
krsort:对数组按照键名逆向排序;
usort:使用用户自定义的比较函数对数组的值进行排序;
uasort:使用用户自定义的的比较函数对数组的值进行排序并保持索引关系;
uksort:使用用户自定义的比较函数对数组的键名进行排序;
5、元素运算:
array_sum:计算数组中的所有值的和;
array_product:计算数组中所有值的乘积;
count/sizeof:计算数组中元素的个数;
6、创建数组:
range:建立一个包含指定范围单元的数组(可以指定步幅,可以指定递减);
compact:创建一个包含变量与其值的数组;
extract:从数组中将变量导入到当前的符号表(与compact功能相反);
array:新建一个数组;
array_merge:合并一个或多个数组(关联会覆盖,索引会重新索引,若想保留索引可以使用'+')
array_merge_recursive:递归合并一个或多个数组;
array_combine:用一个数组的值作为键名,另一个数组的值作为值创建数组;
7、其他:
array_chunk:将数组分割成指定长度的小数组;
array_map:将回调函数作用到每个元素上,返回处理的结果数组(新数组);
array_walk:将回调函数作用到每个元素上(会改变原数组),返回真假;
array_filter:使用回调函数过滤数组(回调函数返回真的才会出现在结果中);
array_flip:返回交换键和值后的新数组;
array_rand:随机从数组中抽取一个或多个元素的键;
array_replace:使用后面的数组中元素替换第一个数组中的元素;
array_reverce:返回一个单元顺序相反的数组(关联数组会保持键值对应,索引数组需要传递第二个参数);
array_unique:移出数组中重复的值。
<?php
$num = rand(1,6);
ehco $num;
echo '<br />';
$num1 = mt_rand(1,6);
echo '$num1';
echo '<br />';
$num2 = 5.4;
ehco floor($num2);
echo '<br />';
$num3 = 6.1;
echo ceil($num3);
echo '<br />';
$str = 'ABCdef';
echo strtolower($str);
echo '<br />';
$str1 = 'ABCdef';
echo strtoupper($str1);
echo '<br />';
$str2 = 'abcdefg';
echo substr($str2,2,4);
echo '<br />';
echo strpos($str2,'c');
?>
14、文件函数:
<?php
function add(){
echo '这是数据库添加方法'}
function del() {
echo '这是删除方法';}
function update (){
echo '这是修改方法';}
function select() {
echo '这是查询方法';} ?>
<?php
include(mysql/wenjianbaohan.php);
add();
?>
<?php
require('mysql/wenjianbaohan.php')
select ();
?>
require和include的区别:
require('......')这个函数一般放在php文件最前面,程序在执行前就会先导入要引用的文件;
include('......')这个函数一般放在程序的流程控制里面。只有程序在执行碰到才会引用。可以简化程序的执行流程。
require:一个文件存在错误时,执行就会中断,并返回一个致命错误。
include:一个文件存在错误时,程序不会中断执行,会弹出一个警告。
php的基础知识(三)的更多相关文章
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- Python基础知识(三)
Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...
- C# 基础知识 (三).主子对话框数值传递
在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗 ...
- 快速掌握JavaScript面试基础知识(三)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- Dapper基础知识三
在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. Dapper,当项目在开发的时候,在没有必要使用依赖注入的时候,如何做 ...
- Java的基础知识三
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- Go语言核心36讲(Go语言基础知识三)--学习笔记
03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...
- 3. K线基础知识三
1. 阴线 证券市场上指开盘价高于收盘价的K线,K线图上一般用淡蓝色标注,表示股价下跌,当收盘价低于开盘价,也就是股价走势呈下降趋势时,我们称这种形态的K线为阴线. 中间部分实体为蓝色,此时,上影线的 ...
- 税收基础知识 > 三税(营业税, 增值税, 所得税) + 关税
三税:营业税 ▪ 增值税 ▪ 所得税 主要关注:一般纳税人, 起征点不详细描述. 营业税(Business tax) 营业税(Business tax),是对在中国境内提供应税劳务.转让无形资产或销售 ...
- python基础知识三
在考虑它们的运算时,一定要想到python是一门面向对象语言,它对类型的要求是不那么严格的,因为在完全面向对象的语言中,一切都是对象. 那么让我们重新 考虑+ - * /等操作,不再拘泥于传统的数 ...
随机推荐
- [PE格式分析] 2.IMAGE_DOS_HEADER
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number 固定为"MZ" ...
- nlinfit非线性回归拟合
% % 使用指定函数对下述两变量进行曲线拟合 % % y=a+k1*exp(m*t)+k2*exp(-m*t); % % 离散点: t=[0,4,8,40], % % y=[20.09,64.5 ...
- golang rest api example
package main import ( "net/http" "github.com/gin-gonic/gin" "github.com/jin ...
- UIButton中的**EdgeInsets是做什么用的?
UIButton中的**EdgeInsets是做什么用的? UIEdgeInsetsMake Creates an edge inset for a button or view.An inset i ...
- Hyper-V迁移---委派
在Hyper-V管理器中-实时迁移,选择“使用kerberos",如图1所示 在AD中,找到Hyper-V宿主,分别设置委派,如图2所示 图1 图2
- The Tao to Excellent
1:一次只做一件事情 我不具备同时做好多件事情的能力. 2:随身携带一本书 效率最高的学习时间是那些零碎的时间. 3:听身体的 休息的标准是:如果你觉得你是在休息,那你就是在休息了. 4:如果有一件事 ...
- Springmvc 进行数据类型转换
SpringMVC进行一些常用的数据类型转换,这里以Date 数据类型的转换为例. SpringMVC表单中输入日期,一般都是以字符串的形式输入,如何将字符形式的日期转换为Date 类型的呢?这里只需 ...
- BZOJ2194:快速傅立叶之二(FFT)
Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非 ...
- 汇编试验四:[bx] 和 loop 的使用
预备知识: 段前缀的使用: ffff:0~ffff:b 和 0020:0~0020:b 的数据: 一次循环的复制效果: 但是,这种方式DS的数据得修改: Source Code: assume cs: ...
- 最长公共子序列问题LCS
最长公共子序列问题 在这里介绍一种在动态规划中类似于板子题的类型 : 最长公共子序列问题.(Link) 首先来看题面:给出1-n的两个排列P1和P2,求它们的最长公共子序列. 我们看到题之后的第一个想 ...