PHP笔记 变量篇

简介:PHP学习中关于变量部分的一些笔记。(学习资料来自于php.net/manual)


1.PHP将变量的“.”变为“_”。如$var.ext将变成$var_ext。

2.$this是一个特殊变量,不能被赋值(yii中有体现)

3.变量的引用:利用“&”可将有名字的变量进行引用赋值

<?php
$foo = 25;
$bar = &$foo;      // 合法的赋值
$bar = &(24 * 7);  // 非法; 引用没有名字的表达式

function test()
{
   return 25;
}

$bar = &test();    // 非法
//摘自php.net/manual
?>

在上例中,$bar与$foo关联,对任意一个变量的改动将影响另一个变量。

4.区分全局变量和超全局变量(存疑)

全局变量的有效范围不包括函数内,因此若要在函数内使用函数外定义的变量,则应在函数内用global声明该全局变量使用数组$GLOBALS(这货就是超全局变量)

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;
    $b = $a + $b;
}
//或
function Sum1()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}

Sum();
echo $b;
//修改自php.net/manual
?>

5.静态变量

在函数内使用,可以使该变量的值不随函数的结束而丢失,常用于函数递归。注意不能用表达式进行赋值

6.可变变量

<?php
class foo {
    var $bar = 'I am bar.';
    var $arr = array('I am A.', 'I am B.', 'I am C.');
    var $r   = 'I am r.';
}

$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar . "\n";            //输出“I am bar.”
echo $foo->$baz[1] . "\n";         //输出“I am bar.”

$start = 'b';
$end   = 'ar';
echo $foo->{$start . $end} . "\n"; //输出“I am bar.”

$arr = 'arr';
echo $foo->$arr[1] . "\n";         //输出“I am r.”,$arr[1]是字符串'arr'的第二个字符
echo $foo->{$arr}[1] . "\n";       //输出“I am B.”
//修改自php.net/manual
?>

注意$foo->bar和$foo->$bar的区别。

疑问:

1.对“函数内对全局变量使用‘&’进行引用,会导致预料之外的行为”仍不理解

2.在一个函数内使用另一个函数内声明的变量时,应作何种声明?

猜你喜欢

转载自blog.csdn.net/botaskey/article/details/81176975