PHP 变量和常量:声明变量 4 个改进

问题

我们在 PHP 编程中,使用变量是不可避免的,那么我们在 PHP 代码中如何正确地声明一个变量呢?

<?php

$var = '我是变量';

说明

在 PHP 编程中,我们如果要使用一个 PHP 变量,首先我们必须遵循 PHP 变量命名规则

使用变量不仅需要遵循 PHP 变量命名规则,我们还必须遵循 PHP 变量的作用域规则:

  1. 全局变量:如果声明的变量不在 classfunctionif / while / for 等语法结构内部,而要在 classfunctionif / while / for 等语法结构内部使用,需要通过关键词 global 或者超全局变量 $GLOBALS 进行使用;
  2. 静态变量:使用关键词 static 声明的变量,静态变量的值会保留至脚本结束;
  3. 局部变量:在 classfunctionif / while / for 等结构语句内部声明的普通变量。

示例

例 1 —— global$GLOBAL 的使用

<?php

$var = '这是一个全局变量';

function foo()
{

    global $var;

    echo "使用关键词 global 输出 \$var 的值为:$var";

}

function foo2()
{

    echo "使用超全局变量 \$GLOBALS 输出 \$var 的值为:{$GLOBALS['var']}";

}

foo();

echo '<br>';

foo2();

例 1 运行结果:

使用关键词 global 输出 $var 的值为:这是一个全局变量
使用超全局变量 $GLOBALS 输出 $var 的值为:这是一个全局变量

从例 1 的运行结果我们可以看出,我们可以通过使用关键词 global 和超全局变量 $GLOBALS 在函数中使用脚本中的全局变量 $var

例 2 —— 比较函数中的局部变量与静态变量

<?php

function bar()
{

    $var = 0;

    $var++;

    return $var;

}

echo '函数 bar 第一次的输出结果:' . bar() . '<br>';

echo '函数 bar 第二次的输出结果:' . bar() . '<br>';

function foo()
{

    static $var = 0;

    $var++;

    return $var;

}

echo '函数 foo 第一次的输出结果:' . foo() . '<br>';

echo '函数 foo 第二次的输出结果:' . foo();

例 2 运行结果:

函数 bar 第一次的输出结果:1
函数 bar 第二次的输出结果:1
函数 foo 第一次的输出结果:1
函数 foo 第二次的输出结果:2

从例 2 的运行结果可以看出,局部变量的值在函数 bar 第二次被调用时,会在内部被重新赋值为 0,然后自增为 1。而静态变量的值在函数 foo 第二次被调用时,仍然保留函数 foo 在第一次被调用后的值 1,并自增为 2

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!