函数

函数主要是将一块代码封装起来方便多次使用,方便以后维护,节省代码。

先看一个简单的函数:

<?php

function myFirstFunc(){
    echo "Hello PHP";
}

myFirstFunc();

?>

带形参和返回值的函数:

<?php

$a = 10;
$b = 20;
function getMax($num1, $num2) {
    return $num1 > $num2 ? $num1 : $num2;
}

echo "最大数是:".getMax($a, $b);
echo "<br />最大数是:".getMax(17, 1);

?>

值传递和引用传递

  • 值传递:值传递是将变量的值拷贝一份传入参数后,在函数中进行操作,这样不会修改函数外部的变量,它会开辟新的内存来存储变量。
  • 引用传递:引用传递是将变量的地址拷贝一份,这样在函数中修改变量也会影响到函数外部的变量,它不会开辟新的内存来储存变量。
<?php
$a = 5;
$b = 40;
$arr = array(55, 10);
// 这是值传递参数的函数。
function getMin($num1, $num2){
    echo "最小值是:".($num1 < $num2 ? $num1 : $num2)."<br />";
}

// 这是引用传递的函数。
function appendArr(&$array, $someValue){
    $array[] = $someValue;
    echo "数组已经被添加<br />";
}

getMin($a, $b);
appendArr($arr, 80);
echo "被添加后的数组:<pre>";
print_r($arr);
echo "</pre>";

// 结果:
// 最小值是:5
// 数组已经被添加
// 被添加后的数组:
// Array
// (
//     [0] => 55
//     [1] => 10
//     [2] => 80
// )

?>

变量的作用域

  1. 局部变量:是在函数内部声明的,当函数执行后被释放。
  2. 全局变量:在函数外部所声明的变量,当关闭页面后被释放。

在PHP中 全局变量是无法直接在函数中使用的,需要使用global关键字:

<?php

$user_name = "Alex_sk";
function someFun(){
    global $user_name;    // 在声明时不可赋值
    echo "my name is:{$user_name}";
}

someFun();
// 结果:my name is:Alex_sk

?>

其实说到底 global关键字 是引用传递的:

<?php

$user_name = "Alex_sk";
function someFun(){
    global $user_name;    // 在声明时不可赋值
    $user_name = "Sky";
    echo "my name is:{$user_name}";
}

someFun();
// user_name在函数中被更改,也会影响到原本的全局变量user_name
echo "<br />my name is:{$user_name}";
// 结果:
// my name is:Sky
// my name is:Sky

?>

我的PHP之旅--PHP的函数初步认识的更多相关文章

  1. acm数论之旅--欧拉函数的证明

    随笔 - 20  文章 - 0  评论 - 73 ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭) https://blog.csdn.net/chen_ze_hua ...

  2. ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭)

    欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数目 辣么,怎么求哩?~(-o ̄▽ ̄)-o 可以先在1到n-1中找到与n不互质的数,然后把他们减掉 比如φ(12) 把12质因数分解 ...

  3. Python之旅Day4 闭包函数 模块及模块倒入

    闭包函数 闭包函数就是在内部函数当中有对外部函数名字的引用 ###代码示例1### def f1(): x =1 def f2(): print(x) return f2 f=f1() f() ### ...

  4. ios学习之旅---c语言函数

    1.函数的概述 C源程序是由函数组成的. 尽管在前面各章的程序中大都仅仅有一个主函数main(),但有用程序往往由多个 函数组成. 函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能. C语 ...

  5. Python学习第十篇——函数初步

    def make_album(name,album_name,song_nums = 1): dict_album = {name:[album_name]} if int(song_nums) &g ...

  6. SG 函数初步 HDU 1536 &amp;&amp; HDU 1944

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1944 pid=1536"> http://acm.hdu.edu.cn/showpr ...

  7. python学习笔记:第9天 函数初步

    1. 函数的定义及调用 函数:所谓的函数可以看作是对一段代码的封装,也是对一个功能模块的封装,这样方便在下次想用这个功能的时候直接调用这个功能模块,而不用重新去写. 函数的定义:我们使用def关键字来 ...

  8. 积性函数初步(欧拉$\varphi$函数)

    updata on 2020.4.3 添加了欧拉\(\varphi\)函数为积性函数的证明和它的计算方式 1.积性函数 设\(f(n)\)为定义在正整数上的函数,若\(f(1)=1\),且对于任意正整 ...

  9. js上 十三、函数初步-2

    13-1.函数的参数 函数的本质: ü 函数的作用,代码重用,编写一个函数,就是为了解决一类问题. ü 函数每次调用,都有一个结果,那么结果和什么相关呢?y = x , y = x2,y = sin( ...

随机推荐

  1. View绘制详解(四),谝一谝layout过程

    上篇博客我们介绍了View的测量过程,这只是View显示过程的第一步,第二步就是layout了,这个我们一般译作布局,其实就是在View测量完成之后根据View的大小,将其一个一个摆放在ViewGro ...

  2. C语言里的文件函数

    1.File *pf = fopen("文件名","打开方式"); 文件名可以加路径,两个"\\"或者一个"/" 打开方 ...

  3. D3中path各指令的含义

    svg.append('path').attr({ id: 'mypath', d: 'M50 100Q350 50 350 250Q250 50 50 250' }) path 的指令有: 指令 参 ...

  4. 【模拟】UVa 1030 - Image Is Everything

    1030 - Image Is Everything Time limit: 3.000 seconds Your new company is building a robot that can h ...

  5. 昨天冲动的搬到外面住了,oh yeah

    昨天我纠结了一天,我是否应该搬到外面去住.我骑着我的自行车,在外面闲逛,我心里想的是,我现在没有钱,可以节约一些生活费,租房的日子,我以后始终都是需要面对的,在目前没有那么多钱的情况下,可以不出去外面 ...

  6. JDBC的几个步骤

    JDBC:JAVA访问数据库的解决方案.几个步骤:1.加载驱动类; 2.与数据库建立连接:         3.执行SQL语句   4.处理结果集 5.关闭连接1. 第一步:加载驱动类: 需要注意:不 ...

  7. (转)(contant的一些用法)

    主要就是增加约束的 以下几种约束 .并 一一列举: 1.主键约束:要对一个列加主键约束的话,这列就必须要满足的条件就是分空因为主键约束:就是对一个列进行了约束,约束为(非空.不重复)以下是代码  要对 ...

  8. .net在Controller里的方法添加[HttpGet]和[HttpPost]

    前端用post过来,Controller就要用[HttpPost],前端用get,Controller就要用[HttpGet],或者不管前端用什么,Controller都不加这些. 前端用post $ ...

  9. oracle中的exists 和not exists 用法 in与exists语句的效率问题

    博文来源(oracle中的exists 和not exists 用法):http://chenshuai365-163-com.iteye.com/blog/1003247 博文来源(  in与exi ...

  10. 使用 x3dom 框架及 WebGL 在浏览器上显示 3 维模型

    如果需要在浏览器上显示 3D 画面的话, 现在一般会使用 ​WebGL, 典型的例如 three.js(​http://mrdoob.github.com/three.js/), 但是 WebGL 对 ...