<基础> 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(浏览器 ...
随机推荐
- ALGO-121_蓝桥杯_算法训练_猴子分苹果
问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...
- vc++获取网页源码之使用import+接口方式
1.使用IWinHttpRequest获取网页源码 首先要创建基于对话框的mfc应用程序 2.import+接口方式 首先导入winhttp.dll,使用IWinHttpRequest接口 #impo ...
- 理解Kubernetes(2): 应用的各种访问方式
理解Kubernetes系列文章: 手工搭建环境 应用的各种访问方式 1. 通过 Pod 的 IP 地址访问应用 1.1 Pod 的IP地址 每个Pod 都会被分配一个IP地址,比如下面这儿pod的I ...
- 学习笔记之深度学习(Deep Learning)
深度学习 - 维基百科,自由的百科全书 https://zh.wikipedia.org/wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0 深度学习(deep lea ...
- 用JavaScript来生成HTML
用JavaScript来生成HTML <style> table{ border-top: 1px #ff0000 solid; border-left: 1px #ff0000 soli ...
- PHP 多态理解
PHP 多态 多态性是指相同的操作或函数.过程可作用于多种类型的对象上并获得不同的结果.不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性. 多态性允许每个对象以适合自身的方式去响应 ...
- 百度地图 android SDKv2.2.0
首先创建自己的KEY http://lbsyun.baidu.com/apiconsole/key 然后点击设置 参照官网文档点击下面连接 官网文档 http://developer.baidu.c ...
- XrmToolBox 连接
- Office365开发者计划——账户信息上显示已是订阅用户,点击其他授权信息,仍然需要激活
一.申请过程跳过. 二.安装之后,点击账号,查看授权状态,如题所述. 解决办法: 链接地址:https://answers.microsoft.com/zh-hans/msoffice/forum/a ...
- Java for循环和foreach循环的性能比较
就是有些人循环用的是普通for循环,有些人用的是foreach循环,它们之间有什么区别?应该在什么时候使用这两种循环了? 两种循环的语法格式: 普通for循环语法: for (int i = 0; i ...