<基础> PHP 进阶之 函数(Function)
- 引用参数
$name = "eko";
function chang_name(&$name){
$name .= '_after_change';
}
chang_name($name); //会改变原有参数$name
echo $name;
- 参数类型声明
function test(array $arr){
for ($i=0; $i <count($arr) ; $i++) {
echo $arr[$i] .'</br>';
}
}
test('hello'); 报错
interface Animal {
function eat();
function sleep();
}
class Cat implements Animal{
public function eat(){
echo "cat eat fish";
}
public function sleep(){
echo "cat is sleeping";
}
}
function fn(Animal $animal){
echo $animal -> eat();
}
fn(new Cat());
- 可变参数
function fn(){
$arg_nums = func_num_args(); //获得参数个数
echo "此时传入 $arg_nums 个参数";
echo "</br>";
$arr_args = func_get_args(); //获得所有参数,返回数组
echo gettype($arr_args) ."</br>"; //输出array
foreach ($arr_args as $arg) {
echo $arg."</br>";
}
$arg = func_get_arg(0); //获得第0个参数
echo $arr_arg;
}
fn('hello',123);
//在PHP5.6以上版本中,可以用拓展运算符代替可变参数
function fn(...$args){
echo "input ".count($args)." arguments";
echo '</br>';
for ($i=0; $i <count($args) ; $i++) {
echo $args[$i] .'</BR>';
}
}
fn('hello','word',123);
fn(...['hello','word',123]); //结果同上 //如果有多个参数,可变参数必须放在最后
function fn($name,...$args){
echo $name .'</br>';
for ($i=0; $i <count($args) ; $i++) {
echo $args[$i] .'</BR>';
}
}
fn('kitty','yellow','miao');
- 返回类型
//php7 中支持函数返回值类型声明
function sum(...$args):int{
$sum = 0 ;
foreach ($args as $value) {
$sum += $value;
}
return $sum;
//return 'hello'; //报错,Return value of sum() must be of the type integer
}
echo sum(1,2,3,4,5);
- 匿名函数 (闭包函数 Closure)
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
//输出 helloWorld
<基础> PHP 进阶之 函数(Function)的更多相关文章
- 二、JavaScript语言--JS基础--JavaScript进阶篇--函数
1.什么是函数 函数的作用,可以写一次代码,然后反复地重用这个代码. 如:我们要完成多组数和的功能. var sum; sum = 3+2; alert(sum); sum=7+8 ; alert(s ...
- python基础(9)-迭代器&生成器函数&生成器进阶&推导式
迭代器 可迭代协议和迭代器协议 可迭代协议 只要含有__iter__方法的对象都是可迭代的 迭代器协议 内部含有__next__和__iter__方法的就是迭代器 关系 1.可以被for循环的都是可迭 ...
- jQuery基础---Ajax进阶
原文:jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一 ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- C++_进阶之函数模板_类模板
C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...
- 第4章 基础知识进阶 第4.1节 Python基础概念之迭代、可迭代对象、迭代器
第四章 基础知识进阶第十七节 迭代.可迭代对象.迭代器 一. 引言 本来计划讲完元组和字典后就讲列表解析和字典解析,但要理解列表解析和字典解析,就需要掌握Python的高级的类型迭代器,因此本节 ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- Python基础与进阶
1 Python基础与进阶 欢迎来到Python世界 搭建编程环境 变量 | 字符串 | 注释 | 错误消除 他只用一张图,就把Python中的列表拿下了! 使用 If 语句进行条件测试 使用字典更准 ...
- js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域
js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...
随机推荐
- 【剑指offer】字符串替换
请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. *StringBuffer 扩容 str ...
- 记使用vue-awesome-swiper遇到的一些问题
一.vue-awesome-swiper的使用 1.在项目中全局引用 import VueAwesomeSwiper from 'vue-awesome-swiper' // require s ...
- .NET使用HttpRuntime.Cache设置程序定时缓存
第一步:判断读取缓存数据 #region 缓存读取 if (HttpRuntime.Cache["App"] != null) { return HttpRuntime.Cache ...
- C#实现mongodb自增列的使用
创建一个集合存放_id db.createCollection("counters") 加入需要自增的字段 { "_id":"productid&qu ...
- openssl命令实例
基本知识 1,证书标准 X.509 X.509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准. X.509的证书文件,一般以.cr ...
- Apollo分布式配置中心部署以及使用
一.简介Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场 ...
- absolute之后居中宽度自适应
position:absolute;之后居中宽度自适应,不用再设定宽度了 css代码如下: .promptBox{display:none;border:1px solid #ccc;paddin ...
- ueditor 正在读取目录
ueditor 版本为1.3.6 项目版本为2.0 引用 <script src="../ueditor/ueditor.config.js" type="tex ...
- Django的模板层简介
Django的模板层 如果我们想要利用视图函数返回一个页面,一种比较简单的方式是利用HttpResponse()方法返回一个含有html内容的字符串: def current_datetime(req ...
- Golang值传递和指针传递
Golang值传递和指针传递 package main import ( "fmt" ) func swap1(x, y, p *int) { if *x > *y { *x ...