PHP变量
//PHP中变量的命名规则如下:
//(1)变量以$符号开始,后面跟着变量的名称。
//(2)变量名必须以字母或者下划线字符开始。
//(3)变量名只能包含字母、数字字符以及下划线(A~z、0~9和_)。
//(4)变量名不能包含空格。
//(5)变量名是区分大小写的($y和$Y是两个不同的变量)。
//PHP是一种弱类型的语言,在创建变量时无须指定变量类型,PHP会根据变量的值自动将其设定为对应的数据类型。我们可以用赋值符“=”创建变量,例如:
// $x = 'hello world'; //创建了一个x变量
<?php
/*
变量的作用域是脚本中变量可被引用/使用的部分。PHP有4种不同的变量作用域:local、global、static、parameter。
在所有函数外部定义的变量拥有全局作用域,此变量称为全局变量。
全局变量可以被脚本中的任何部分直接使用变量名称访问,但是要在一个函数定义体中访问一个全局变量,需要使用global关键字。
在PHP函数内部声明的变量是局部变量,仅能在函数内部访问。
下面通过示例来说明局部变量和全局变量的使用。
*/
$x = 5; // 全局变量
function myTest()
{
global $x; // 声明 $x 是全局变量
$y = 10;
echo "Test variables inside the function:";
echo "Variable x is:" . $x;
echo "\n";
echo "Variable y is: $y";
echo "\n";
}
myTest();
echo "Test variables outside the function:";
echo "Variable x is:" . $x;
echo "\n";
//当一个函数完成时,它的所有变量通常都会被删除。
//如果想让函数执行完毕时函数内的局部变量保留,可以使用static关键词。
function myTest1()
{
static $x=0;
echo $x;
$x++;
}
myTest1();
myTest1();
myTest1();
echo "\n";
//变量中还有可变变量一说。可变变量允许动态地改变一个变量的名称。可以在变量的前面再加一个“$”来实现可变变量
$a = 'aa';
$aa ="bb";
echo $$a;
echo "\n";
//在函数里还有一个参数作用域,即传递给函数的参数,参数在函数声明时即声明。
function test($x)
{
echo $x;
}
test(5);
?>
PHP常量
<?php
/*
合法的常量名以字母或下划线开始,后面可跟任何字母、数字或下划线.
可以使用define()来定义常量,在PHP 5.3.0以后也可使用const关键词在类定义之外定义常量。
常量只能是标量数据(boolean、integer、float、string)。
常量的作用域是全局的,即在脚本的任何地方都可以使用已经定义的常量。
·常量和变量有如下不同:
·常量前面没有美元符号($)。
·常量只能用define()和const定义。
·常量的作用域是全局的。
·常量一旦被定义就不能被重新定义或者取消定义。
·常量的值一般是标量。
*/
// 合法的常量名
define("FOO", "something"); // 定义一个名为FOO的常量
define("FOO2", "something else");
define("FOO_BAR", "something more");
// 非法的常量名
define("2FOO", "something");
const A = 'AAA'; // 使用const 定义一个常量,与define定义效果一样
// 下面的定义是合法的,但应该避免这样做:(自定义常量不要以__开头)
// 也许将来有一天PHP会定义一个__FOO__的魔术常量
// 这样就会与你的代码相冲突
define("__FOO__", "something");
?>
<?php
//PHP中有很多预定义常量,也称作魔术常量,其中很多都是由不同的扩展库定义的,只有在加载了这些库时才会出现。
//PHP_INT_MIN
//PREG_JIT_STCKLIMIT_ERROR
//ZLIB_NO_FLUSH
//ZLIB_PARTIAL_FLUSH
//ZLIB_SYNC_FLUSH
//ZLIB_FULL_FLUSH
//ZLIB_BLOCK
//ZLIB_FINISH
echo PHP_INT_MIN;
echo "\n";
echo ZLIB_NO_FLUSH;
echo "\n";
echo ZLIB_PARTIAL_FLUSH;
echo "\n";
echo ZLIB_SYNC_FLUSH;
echo "\n";
echo ZLIB_FULL_FLUSH;
echo "\n";
echo ZLIB_FINISH;
echo "\n";
echo ZLIB_BLOCK;
echo "\n";
echo PREG_JIT_STACKLIMIT_ERROR;
echo "\n";
?>