php变量名是区分大小写的。 这句话是否正确?
答案:正确!
变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。
$this 是一个特殊的变量,它不能被赋值。
$4site = 'not yet'; // 非法变量名;以数字开头
$_4site = 'not yet'; // 合法变量名;以下划线开头
$i站点is = 'mansikka'; // 合法变量名;可以用中文
变量分两种:传值赋值和引用赋值。(只有有名字的变量才可以引用赋值)
$foo = 'Bob'; // 将 'Bob' 赋给 $foo
$bar = &$foo; // 通过 $bar 引用 $foo
$bar = "My name is $bar"; // 修改 $bar 变量
echo $bar;
echo $foo; // $foo 的值也被修改
$bar = &(24 * 7); // 非法; 引用没有名字的表达式
虽然在 PHP 中并不需要初始化变量,但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值 - 布尔类型的变量默认值是
FALSE
,整形和浮点型变量默认值是零,字符串型变量(例如用于 echo 中)默认值是空字符串以及数组变量的默认值是空数组。
isset()语言结构可以用来检测一个变量是否已被初始化
范围
$a = 1;
$b = 2;
$c=4;
function Sum()
{
global $a, $b;
$b = $a + $b;
echo $c;
}
Sum();
echo $b;
答案:3 因为$c的范围只在函数中
静态变量
function test()
{
static $a = 0;
echo $a;
$a++;
}
test();
test();
test();
test();
test();
test();
test();
test();
test();
test();
答案:0123456789
静态变量每次运行,都会在上次运行的结果上自增。
静态变量一般使用在递归中,注意:递归必须确保有充分的方法来中止递归。
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。申明的时候,必须赋值,并且是一个确定的值。不能是变量,函数等结果未知的值。
常量也可以为静态变量赋值,但是这样没任何意义,如上的例子中,
define("NAME", "0");
function test()
{
static $a = NAME;
$a=0;
echo $a;
$a++;
}
test();
test();
test();
test();
test();
test();
test();
test();
test();
答案将会是0000000000,因为NAME不是静态变量,每次赋值都从0开始。这样失去了静态变量本来的意义。
注意,在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。$this 变量也是一个特殊变量,不能被动态引用。
确定变量类型:gettype(),is_array(),is_float(),is_int(),is_object() 和 is_string()
php在线面试题集:http://cainiaophp.com/
php面试讨论群:536633782
网友评论