PHP 变量

时间:2018-11-15 13:14:01  来源:igfitidea点击:

在本教程中,我们将学习如何使用PHP变量来存储和操作数据。

定义PHP变量

变量存储任何类型的值,例如字符串、数字、数组、对象或资源。

变量有名称和值。

可以使用下面的语法来定义变量:

$variableName = value;

在PHP中定义变量时,必须遵循下面的命名规则:

  • 变量的名称必须以美元符号($)开头。
  • 美元符号($)后面的第一个字符必须是字母(a-z)或下划线(_)
  • 变量名的字符可以是下划线、字母或者数字。
  • PHP变量名是区分大小写的。这就是说$abc和$Abc变量是两个完全不同的变量。

下面的例子定义了两个整数型变量:

<?php
$a = 10;
$b = 20;

变量的数据类型

PHP是一种弱数据类型的编程语言。
这就是说,在定义变量时,不指定其数据类型。

PHP将根据分配给变量的值来自动为变量选择适当的数据类型。
此外,当你为变量赋予不同类型的值时,变量的数据类型也会发生变化。

请看下面的例子:

<?php
$a = 20;
$a = '这是一个字符串';

开始时,我们将$a变量定义为整数类型,因为我们将它的值赋值为20。
然后,我们将一个字符串赋值给$a,因此$a的数据类型现在是string而不是integer。

PHP提供了以下数据类型:

  • 标量数据类型,如:整数、浮点数、字符串和布尔值。
  • 复合数据类型,如:数组和对象。
  • 特殊数据类型: null和resource

类型转换

PHP根据使用变量的上下文自动处理类型转换。在下面的例子中,PHP将字符串转换为数字,并使用数字进行计算:

<?php
 
$a = 20;
$b = '10'; // 字符串
$z = $a + $b; // $b 被转换为整数
 
echo $z; // 30

但是,出于安全原因,应该在使用变量之前将其数据类型转换为所需的数据类型。
要强制PHP按照指定类型来使用变量,可以将所需数据类型的名称放在变量前面的括号中。这就是所谓的类型转换。

请看下面的例子:

<?php
$a = 20;
$b = '10'; // 字符串
$z = $a + (int)$b; // $b 强制转换为整数
 
echo $z; // 30

请注意,$b变量的数据类型没有改变。要更改变量的数据类型,可以使用settype()函数,稍后我们将对此进行讨论。

查看变量的数据类型

PHP提供了一个内置函数gettype()用于返回变量的数据类型。
gettype()函数接受一个变量作为参数并返回它的数据类型。

下面的示例演示了如何使用gettype()函数:

<?php
$int = 10; // 整数
$str = 'theITroad PHP教程'; // 字符串
$bool = true; // 布尔类型
$d = 3.14; // 浮点数
 
echo gettype($int), '<br>';
echo gettype($str) , '<br>';
echo gettype($bool), '<br>';
echo gettype($d), '<br>';

更改变量的数据类型

要更改变量的数据类型,请使用settype()函数。

使用settype()函数时,需要传递一个要更改数据类型和所需数据类型的变量。

settype()函数将尽可能保留变量的值。

请看示例:

<?php
 
$f = 20.05;
echo $f . '<br>'; // 浮点数
 
settype($f, 'integer');
echo $f . '<br>'; // 20 整数
 
settype($f, 'string');
echo $f . '<br>'; // '20' 字符串
 
settype($f, 'float');
echo $f . '<br>'; // 20 浮点数

检测变量的数据类型

PHP提供了很多有用的函数用来测试变量的数据类型。

下表列出了这些函数:

函数名说明
is_int($var);如果$var是一个整数,则返回true,否则返回false。
is_string($var);如果$var是一个字符串,则返回true,否则返回false。
is_bool($var);如果$var是一个布尔值,则返回true,否则返回false。
is_float($var);如果$var是一个浮点数,则返回true,否则返回false。
is_long($var);如果$var是长类型数,则返回true,否则返回false。
is_numeric($var);如果$var是一个数字,则返回true,否则返回false。
is_double($var);如果$var是一个双精度变量,则返回true,否则返回false。
is_object($var);如果$var是一个对象,则返回true,否则返回false。
is_array($var);如果$var是一个数组,则返回true,否则返回false。

变量的变量

PHP允许您引用一个变量的值,而该变量的名称存储在另一个变量中。

请看下面的例子:

<?php
 
$foo = 'bar';
$$foo = 'this is $bar';
 
echo $bar; // this is $bar

首先,我们定义了一个$foo变量并为它分配了一个字符串bar。
然后,我们使用$$foo并将它分配给另一个字符串。
$foo表示bar,$$foo表示$bar变量;因此,这个赋值创建了一个新变量$bar,它的名字是$foo变量的值,也就是bar。
最后,我们显示了$bar变量的值。

设置和释放变量

当我们为一个变量赋值时,无论是字面量的值还是另一个变量的值,我们都说这个变量被设置了。
您可以使用isset()函数来检查是否设置了变量。

<?php
 
$a; // $a 没有设置
if (isset($a)) {
    echo '$a is set. <br/>';
} else {
    echo '$a is not set. <br/>';
}
 
$b = 20; // 给$b 赋值
if (isset($b)) {
    echo '$b is set. <br/>';
} else {
    echo '$b is not set. <br/>';
}

要释放变量,可以使用unset()函数。

下面的例子演示了如何使用unset()函数销毁变量:

<?php
 
$a = 20; //
if (isset($a)) {
    echo '$a is set. <br>';
} else {
    echo '$a is not set. <br>';
}
 
unset($a); // $a 不再可用
if (isset($a)) {
    echo '$a is set. <br>';
} else {
    echo '$a is not set. <br>';
}

检查NULL和空值

要检查变量是否为NULL,可以使用is_null()函数。

<?php 
 
$x = null;
echo is_null($x) ? '$x is null' : '$x is not null';
 
echo '<br />';
 
$x = 30;
echo is_null($x) ? '$x is null' : '$x is not null';

要检查变量是否为空,可以使用empty()函数。
如果一个变量的值等于false或它不存在,则它被认为是空的。

下面的示例演示如何使用empty()函数:

<?php 
 
$x = 0;
echo is_empty($x) ? '$x 为空' : '$x 不为空';
 
$s = '';
echo is_empty($s) ? '$x 为空' : '$x 不为空';

PHP变量的作用域

变量的作用域(作用范围)决定了脚本的哪些部分可以访问它。定义变量的位置决定了变量的作用域。

PHP中有四种类型的变量作用域:局部、全局、静态和函数参数。

局部变量

函数中定义的变量是该函数的局部变量。这就是说局部变量只能由定义它的函数中的代码访问。

请看下面的例子:

<?php
 
function foo()
{
    $a = 10;
    $a = $a + 20;
    return $a;
}

变量$a是foo()函数中的一个局部变量。它不能在foo()函数之外被访问。

全局变量

在函数外部声明的变量具有全局作用域或称为全局变量。

全局变量可以从程序的任何部分访问。
但是,默认情况下,它在函数内部不可用。要在函数内部引用全局变量,需要在声明变量时使用global关键字,如下所示:

<?php
$x = 10;
 
function test()
{
    global $x;
    echo $x; //10
}
 
test();

超全局变量

PHP提供了一个系列特殊的全局变量,称为超全局变量superglobal。
超全局变量提供关于PHP脚本环境的信息。超级全局变量在任何PHP脚本文件中都自动可用。

下面是PHP的超全局变量列表:

$GLOBALS 是一个包含全局变量的数组。
$_SERVER 包含有关web服务器环境的信息。
$_ENV 包含有关脚本环境的信息。
$_GET 包含来自GET请求的信息。
$_POST 包含来自POST请求的信息。
$_REQUEST 包含用户的请求信息。
$_SESSION 包含来自会话中注册的任何变量的信息。
$_COOKIE 包含来自HTTP cookies的信息。
$_FILES 包含文件上传后的信息。

静态变量

静态变量在函数调用之间保留其值,并且它只能在该函数内部访问。

使用static关键字定义静态变量。例如:

<?php
function set_counter()
{
    static $counter = 0;
    $counter++;
    echo $counter . '<br/>';
}
set_counter(); // 1
set_counter(); // 2
set_counter(); // 3

函数参数

函数的参数是局部的,它们只能在函数内部可见。请看以下示例:

<?php
function to_html($str)
{
//
}

$str是to_html()函数的参数。它只在to_html()函数中可用。