php面试题

php面试:变量

2018-12-10  本文已影响10人  AISpider

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

上一篇 下一篇

猜你喜欢

热点阅读