0

0

PHP学习笔记之php变量用法_PHP教程

php中文网

php中文网

发布时间:2016-07-13 17:15:40

|

1039人浏览过

|

来源于php中文网

原创

变量是php编程中必不可少的一种东西了,在php中变量为分全局变量与私有变量,下面来分享我对php变量的一些了解与用法,大家可参考参考。

如果对于变量和常量的定义,你会注意几个方面呢?你可能会想到:

•如何定义变量,它和C# 等语言有什么不同呢?
•变量区分大小写吗?
•PHP的变量还有其他重要的吗?

•常量和变量的定义一样吗?
 分别讲述吧。


1.如何定义变量,它和C# 等语言有什么不同呢?
   PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。例如:

 代码如下 复制代码

 $var='Jim';
  $VAR='Kimi;
  echo "$var,$VAR";//输出“Jim,Kimi"
 ?>

你可能还关心变量的命名,其实和大多数语言一样。
2. 变量区分大小写吗?
   如 1里说的,区分大小写。
  注意,需要说明的一点是自PHP4以来,引入了引用赋值的概念,其实和多数语言的引用类似,不过我觉得最类似的是C/C++.因为它也用到了"&"符号。


例如: 

 代码如下 复制代码
1 2 $foo = 'Bob';              // 赋值'Bob'给foo
3 $bar = &$foo;              // 通过$bar引用.注意&符号
4 $bar = "My name is $bar";  // 修改 $bar
5 echo $bar;
6 echo $foo;                // $foo 也修改了.
7 ?>


和其他语言一样,只能对有变量名的变量才可以引用


php中的可变变量说白了,就是拿一个变量的值解析成一个变量名,去读那个变量名的值。实例:

 代码如下 复制代码

 

立即学习PHP免费学习笔记(深入)”;

    $a = "China";  //变量a
    $b = "a";       //变量b
    $China = "I'm Chinese !"; //变量China
    $f = "b";  //变量f
   
    echo $a."
";  //输出 China
    echo $$a."
"; //输出 I'm Chinese  --这里像要当做可变变量解析,必须在前面多加一个$符号
    $a = "f";  //改变变量指向的名称(这里就是可变变量的应用)
    echo $$a."
"; //经过上面指向变量f后输出 b
    $a = "b"; //同上
    echo $$a."

"; //输出 a
   
    echo $b."
"; //输出 a
    echo $$b."
"; //输出 b
    echo $$$b."

"; //输出 a
   
    echo $f."
"; //输出 b
    echo $$f."
"; //输出 a
    echo $$$f."
"; //输出 b
    echo $$$$f."

"; //输出 a
   
    $$a = "China"; //前面最后一个已经更改了变量为b所谓$$a=$b 也就是改变的$b的值
    echo $b."
"; //输出 China
    echo $$b; //输出 I'm Chinese
?>

注意:可变变量不能应用于$this和超全局变量 (php变量的作用域和其他高级编程语言有所不同。看代码)

 代码如下 复制代码


    $name = 'man';
    $$name = 'abc'; //如果事先没有man这个变量。就新建一个man变量。 然后把abc赋值过去
    $$$name = 'def';
    echo $man."
"; //输出abc
    echo $abc; //输出def
   
    echo "


";
    function show()
    {
        global $name; //这里的global并不是设置为全局变量。而是引用
        echo $name."
";  //输出man
    }
   
    function showtwo()
    {
        //global $name;
        //echo $name."
";
        echo $GLOBALS['name']; //超全局变量数组
    }
   
    show();
    showtwo();
?>

变量函数:

 代码如下 复制代码

        function b()
        {
            echo "这是B";   
        }
        function c($name = "China") //设默认值
         {
            echo "这是$name";
        }
       
        $a = 'b';
        $a(); //找值所在的函数
         $a = 'c';
        $a(); ?>

 

立即学习PHP免费学习笔记(深入)”;

 

立即学习PHP免费学习笔记(深入)”;

可变变量的一个典型应用:

 代码如下 复制代码





无标题文档


   
   

       

           
           

           
           

           
           

           
       

   

   
        foreach($_POST as $key=>$value)
        {       
            //print_r($_POST);
            $$key = $value;
        }
        //extract($_POST); //从数组中将变量导入到当前的符号表 --自行查找php手册
        echo $name."
";
        echo $pwd."
";
        echo $tag."
";
    ?>

变量作用域 .


变量范围
变量的范围即它定义的上下文背景(译者:说白了,也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。范例:

 代码如下 复制代码

$a = 1;
include "b.inc";
?> 

这里变量 $a 将会在包含文件 b.inc 中生效。但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。范例:

 代码如下 复制代码

$a = 1; /* global scope */

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

Test();
?> 

这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值。你可能注意到 PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能漫不经心的改变一个全局变量。PHP 中全局变量在函数中使用时必须申明为全局。

PHP 网络编程技术与实例(曹衍龙)
PHP 网络编程技术与实例(曹衍龙)

PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍

下载

The global keyword
首先,一个使用 global 的例子:


例子 12-1. 使用 global

 代码如下 复制代码

$a = 1;
$b = 2;

function Sum()
{
   global $a, $b;

   $b = $a + $b;
}

Sum();
echo $b;
?> 
 


以上脚本的输出将是 "3"。在函数中申明了全局变量 $a 和 $b,任何变量的所有引用变量都会指向到全局变量。对于一个函数能够申明的全局变量的最大个数,PHP 没有限制。

在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:


例子 12-2. 使用 $GLOBALS 替代 global

 代码如下 复制代码

$a = 1;
$b = 2;

function Sum()
{
   $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}

Sum();
echo $b;
?> 
 


在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。以下范例显示了超全局变量的用处:


例子 12-3. 演示超全局变量和作用域的例子

 代码如下 复制代码

function test_global()
{
   // 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函数的本地区域中有效。
   global $HTTP_POST_VARS;

   print $HTTP_POST_VARS['name'];

   // Superglobals 在任何范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。
   print $_POST['name'];
}
?> 
 


使用静态变量
变量范围的另一个重要特性是静态变量(static variable)。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。看看下面的例子:


例子 12-4. 演示需要静态变量的例子

 代码如下 复制代码
function Test ()
{
   $a = 0;
   echo $a;
   $a++;
}
?> 

 

立即学习PHP免费学习笔记(深入)”;


本函数没什么用处,因为每次调用时都会将 $a 的值设为 0 并输出 "0"。将变量加一的 $a++ 没有作用,因为一旦退出本函数则变量 $a 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $a 定义为静态的:


例子 12-5. 使用静态变量的例子

 代码如下 复制代码
function Test()
{
   static $a = 0;
   echo $a;
   $a++;
}
?> 
 


现在,每次调用 Test() 函数都会输出 $a 的值并加一。

静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。一下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止:


例子 12-6. 静态变量与递归函数

 代码如下 复制代码

function Test()
{
   static $count = 0;

   $count++;
   echo $count;
   if ($count    Test ();
   }
   $count--;
}
?> 
 


注: 静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。


例子 12-7. 声明静态变量

 代码如下 复制代码

function foo(){
   static $int = 0; // correct
   static $int = 1+2; // wrong (as it is an expression)
   static $int = sqrt(121); // wrong (as it is an expression too)

   $int++;
   echo $int;
}
?> 

 

立即学习PHP免费学习笔记(深入)”;


全局和静态变量的引用
在 Zend 引擎 1 代,驱动了 PHP4,对于变量的 static 和 global 定义是以 references 的方式实现的。例如,在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。这有可能导致预料之外的行为,如以下例子所演示的:

 代码如下 复制代码

function test_global_ref() {
   global $obj;
   $obj = &new stdclass;
}

function test_global_noref() {
   global $obj;
   $obj = new stdclass;
}

test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);
?> 

执行以上例子会导致如下输出:

NULLobject(stdClass)(0) {}

类似的行为也适用于 static 语句。引用并不是静态地存储的:

 代码如下 复制代码

function &get_instance_ref() {
   static $obj;

   echo "Static object: ";
   var_dump($obj);
   if (!isset($obj)) {
   // 将一个引用赋值给静态变量
   $obj = &new stdclass;
   }
   $obj->property++;
   return $obj;
}

function &get_instance_noref() {
   static $obj;

   echo "Static object: ";
   var_dump($obj);
   if (!isset($obj)) {
   // 将一个对象赋值给静态变量
   $obj = new stdclass;
   }
   $obj->property++;
   return $obj;
}

$obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "/n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?> 

执行以上例子会导致如下输出:

Static object: NULLStatic object: NULLStatic object: NULLStatic object: object(stdClass)(1) {  ["property"]=>  int(1)}

上例演示了当把一个引用赋值给一个静态变量时,第二次调用 &get_instance_ref() 函数时其值并没有被记住

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/628777.htmlTechArticle变量是php编程中必不可少的一种东西了,在php中变量为分全局变量与私有变量,下面来分享我对php变量的一些了解与用法,大家可参考参考...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 7.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号