我是靠谱客的博主 帅气蚂蚁,最近开发中收集的这篇文章主要介绍php怎么在方法里用外部变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑

今天我用纯原生的PHP写了一个方法,想调用外部全局变量的时候,结果:要么是报错了,要么是没有任何输出?

下面我们来聊聊原因和解决方法:

变量范围

在用户自定义方法(函数)中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。例如:

<?php
$a = 1; /* global scope */

function Test()
{
    echo $a; /* reference to local scope variable */
}

Test();
?>
登录后复制

这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值。

你可能注意到 PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能不小心就改变了一个全局变量。PHP 中全局变量在函数中使用时必须声明为 global。

第一种解决方法:global 关键字---在函数内全局申明函数外的变量

<?php
$a = 1;
$b = 2;
$c = 3;
function demo(){
	global $a,$b,$c;
    echo '$a = '.$a;
    echo '<br>$b = '.$b;
    echo '<br>$c = '.$c;
}
demo();
?>
登录后复制

看看输出结果为:

1.png

分析:

global关键字的作用是:导入全局变量,利用global 变量1, 变量2, ...的形式把全局变量1, 变量2...导入到一个函数的局部范围内,就可以在函数内部使用在函数外部定义的全局变量了。

使用 global 关键字需要注意一下几点:

  • global 关键字,只能在函数内部使用,不能在函数外部使用;

  • global 关键字只能用来引用函数外部的全局变量,在引用时不能直接赋值,赋值和声明语句需要分开写;

  • 在函数内部销毁一个使用 global 关键字修饰的变量时,函数外部的变量不受影响。

第二种解决方法:利用$GLOBALS超全局变量

<?php
$a = 1;
$b = 2;
$c = 3;
function demo(){
    echo '$a = '.$GLOBALS['a'];
    echo '<br>$b = '.$GLOBALS['b'];
    echo '<br>$c = '.$GLOBALS['c'];
}
demo();
?>
登录后复制

输出结果为:

2.png

分析:

$GLOBALS是一种预定义变量(又叫超全局变量),是包含所有变量的全局组合数组,变量的名称就是数组的键,可以使用$GLOBALS['变量名']的形式来访问指定全局变量。只要是出现过的全局变量,就可以通过$GLOBALS这个数组取得。

global和$GLOBALS的区别

  • global只能在函数内部使用,不能在函数外部使用;而$GLOBALS 可以在程序的任意位置(函数内外)都能使用。

  • 在函数内部销毁一个使用 global 关键字修饰的变量时,函数外部的变量不受影响;而$GLOBALS是有影响的。

    原因:

    使用 global 关键字修饰的$var变量时,是对函数外部同名变量的引用,内外是两个互不影响的变量;

    而 $GLOBALS['var'] 指的就是函数外部变量本身,是一个变量。

第三种解决方法:将函数外部变量用参数传递进去

<?php  
header('content-type:text/html;charset=utf-8');   
$mytext="靠谱客";

function chao_echo($mytext){
    echo $mytext;
}

chao_echo($mytext);
?>
登录后复制

3.png

推荐学习:《PHP视频教程》

以上就是php怎么在方法里用外部变量的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是帅气蚂蚁为你收集整理的php怎么在方法里用外部变量的全部内容,希望文章能够帮你解决php怎么在方法里用外部变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部