php函数变量的作用域及函数返回值教程

在php教程中关于在一个函数中定义的变量,包括参数在内都不能访问函数外部变量,并且在默认的情况下,在一个函数外部定义的变量不能访问的函数变量。

下面看实例

<?php
$a = 1;
$b = 2;
function Sum()
{
    global $a, $b;
    $b = $a + $b;
}
Sum();
echo $b;
?>这样返回$b的值为3,在php中global是一个全局变量所有才会这样,那么我们现来看php变量引用实例

<?php
function str_unite (&$string)
{
    $string .= '也喜欢蓝色.';
}
$str = '喜欢红色,';
str_unite ($str);
echo $str;    // 输出结果: '喜欢红色,也喜欢蓝色.'
?> 
,上面讲的是函数的作用域的全局变量与函数的引用,下面来看个函数的局部变量

<?php
$a = 1;
$b = 2;
function Sum($a,$b)
{
     $b = $a + $b;

echo $b;//3
}
Sum();//
echo $b;//2
?>
本站原创教程转载注明来源www.jzread.com/

时间: 2024-09-29 15:37:15

php函数变量的作用域及函数返回值教程的相关文章

【转】Shell中脚本变量和函数变量的作用域

 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 例1:脚本变量的作用域#!/bin/bash#define the function ltx_funcltx_func(){   echo $v1   #modify the variable v1   v1=200 }#define the

javascript学习笔记之对象函数变量作用域

一.对象 数组我们用[],对象我们用{} 创建对象: var obj = {属性名:属性值1,属性名:属性值2,属性名:属性值3}; var obj = {"name":"zhansan","age":22,"sex":'male'}; 对象单元值的引用 对象名.属性名 obj.name//使用方法 对象名[属性名] obj.['name']//这是类似数组的使用方法,不建议这么使用 对象如何遍历,遍历对象不能用obj.key

函数返回值的检查方法----历史遗留问题?

问题描述 网上众多的源码,在创建事件或者创建线程之后,会将其句柄与INVALID_HANDLE_VALUE进行比较,检查函数的执行是否成功,如下所示:m_hExitEvt=CreateEvent(NULL,FALSE,FALSE,NULL);if(m_hExitEvt==INVALID_HANDLE_VALUE){returnFALSE;}问题出现了:在d:ProgramFilesMicrosoftVisualStudio.NET2003vc7PlatformSDKincludepdh.h和d:

Python基本语法_函数_返回值

目录 目录 前言 函数的返回值 在函数中Return和Print的区别 函数中的文档 前言 函数的返回值是函数重要的组成部分.函数的根本在于实现程序的部分功能,所以很多时候我们需要将函数执行后的结果返回给程序再由程序作出进一步的操作.可以说是函数的返回值令函数与函数之间,函数与主程序之间更加紧密的联系起来. 函数的返回值 在Python的函数中都有一个返回值,默认为None.也可以使用return value语句来定义一个且只能定义一个可为任意类型的返回值.但是我们能够返回一个序列类型的对象,来

c++-C++ 类内函数以引用作为返回值(例如返回类内私有成员变量)

问题描述 C++ 类内函数以引用作为返回值(例如返回类内私有成员变量) 主函数中用参数a接受这个返回值,那么对a的改变会引起私有成员变量的改变吗? 解决方案 返回了引用就可以修改它指向的变量.这种方式通过函数来达到修改内部变量的方式.从而改变封装的行为.不过一般要清楚这么做的目的 解决方案二: 作为引用的变量,相当于一个别名:原理上是指向同一块内存,因此对引用变量的修改就会导致原始变量跟着修改. 解决方案三: 同一个对象当然会改变.通过共有方法将私有成员传出来是很常见的做法,比如设计模式中的单例

(一二四)给类对象赋值、以及类对象的返回值

于直接给对象赋值: 之前学过,如何给对象在初始化时进行赋值. 对于C++11来说,初始化方式有三种: ① man c = man{ "cc",1 }; ② man d = { "dd",1 }; ③ man f{ "ff",1 };   假如有一类M,他有两个私有成员a和b(int类型). 于是新建一对象M q; 对象q使用默认构造函数(假如都赋值为0,这个不重要): 现在,我们想给对象q的第一个私有成员赋值,该怎么办? 这章刚学过运算符重载,难

C++中内存分配、函数调用和返回值问题(1/2)

在谈述函数调用和返回值问题之前,先来看看c++中内存分配的问题. c++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区又分为静态数据区.动态数据区以及常量区,动态数据区包括堆区和栈区. 一下是各个区的作用: (1)代码区:存放程序代码: (2)数据区    a.静态数据区: 在编译器进行编译的时候就为该变量分配的内存,即全局变量和静态变量(用static声明的变量),存放在这个区的数据程序全部执行结束后系统自动释放

Object转Integer类型失败,转Long型可以,方法返回值为1,并没有超过两个类型的范围

问题描述 Object转Integer类型失败,转Long型可以,方法返回值为1,并没有超过两个类型的范围 在网上找的尚硅谷的教学视频 其中有添加权限一段 String hql="select count(*) from Right r where r.rightUrl=?"; //此处不能用integer只能Long Long count=(Long) this.uniqueResult(hql, url); System.out.println(count); 下面是uniqueR

mian()的参数和返回值到底是什么?

一直以来都使用着void main(){}但是从没有关注过参数和返回值~~~ 确实是缺少哪种疑问的学习态度,从来都是来学这是什么,却没有考虑为什么要这样写. 其实main()是有参数的,而且是两个,它的原型如下: int main(int argc,char* argv[]) { return 0; } //其中,argc代表命令行中字符串的个数,argv是一个字符指针数组==>指向命令行中各个字符串   由于main()函数是被启动例程调用的,所以从main()函数return时仍返回到启动例