函数

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

先看一个简单的函数:

<?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. TCP/IP协议原理与应用笔记12:单播、多播和广播地址(目的地址)

    根据数据接收者的接收范围,将目的地址分为单播.多播.广播. 这里目的地址的划分主要针对的是 物理地址 和 IP地址,没有涉及到端口地址,因为主要针对标识通信节点的地址(物理地址 和 IP地址)而言,和 ...

  2. Java8的新特性

        Java 8主要新特性包括如下几点: 一.接口的默认方法和静态方法 Java 8版之前,接口只有抽象方法,而在Java 8,为接口新增了两种类型的方法. 第一种是默认方法:在Java 8中,可 ...

  3. easyui-validatebox验证 radio

    添加规则 $.extend($.fn.validatebox.defaults.rules, { requireRadio: { validator: function(value, param){ ...

  4. 原生JQ实现图片滑动轮播

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  5. JAXB - XML Schema Types, Defining Types for XML Elements With Content

    Content: A Value The content of an XML element may be some value, or one or more subordinate element ...

  6. js 获取url中的查询字符串

    function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)( ...

  7. SQL-学习使用FOR XML PATH

    前言:本人SQL技术很烂,然后工作时间也不久,许多东西都还在学习中,说的不好的地方尽请谅解. 首先跟大家说一下我今天遇到的问题吧. 查出的数据有三列,第一列存放的是32位的GUID,Res_Name存 ...

  8. asp下实现多条件模糊查询SQL语句

    常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...

  9. 要源码的快来啊,价值500的OA商业源码免费送给大家,望大家年底奖金多多......

    功能介绍: 兼容IE6,7,8以上.GooleChrome.360及遨游等浏览器. 系统特色: 1.系统经过抗压测试. 2.语音提示功能. 3.支持office2007在线编辑. 4.强大的图形化工作 ...

  10. lrzsz on linux

    Linux Disibutaion:Ubuntu 16.04.1 LTS lrzsz是一款在linux里可代替ftp上传和下载的程序. 1.下载lrzsz源码包 #下载源码包 wget https:/ ...