php学习笔记--2. 变量

命名规则

 

php变量使用一个美元符号$后面加变量名来表示。变量名是区分大小写的

变量名以字母或者下划线开头,后面跟任意数字,字母,下划线。可以使用中文来命名变量

 

传递方式

 

变量默认是传值赋值。

$a = 1;

$b = $a;

$b = 10000;

Echo$a; // 打出 1

如果想要引用赋值,必须使用 & 符号

$a = 1;

$b =&$a;

$b = 1000;

Echo$a;//打出1000

 

变量的默认值

 

php可以不初始化变量。但是推荐定义变量时给它一个初始值

未初始化的变量具有其类型的默认值 -布尔类型的变量默认值是 FALSE,整形和浮点型变量默认值是零,字符串型变量(例如用于 echo 中)默认值是空字符串以及数组变量的默认值是空数组。

 

 

 

变量的作用域

 


$a=100; // 全局变量

 

function test(){

$a=10000; //局部变量

}

 

test();

echo $a;//打出100

 

 

 


$a=100;//全局变量

 

function test(){

global $a;//声明使用全局变量

$a=10000;

}

 

test();

echo $a;//打出10000

 

          

$a=100;

 

function test(){

$GLOBALS['a'] = 10000;

}

 

test();

echo $a;//打出10000

 

 

 

 

static静态变量

static关键字:

function test()

{

    static $count = 0;

 

    $count++;

    echo $count." ";

    if ($count < 10) {

        test();

    }

 

    $count--;

   echo $count." ";

}

 

test();

 

打印结果为1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1 0

 

global关键字:

$count = 0;        

function test()

{  

    global $count;

     $count++;

    echo $count." ";

    if ($count < 10) {

        test();

    }

 

    $count--;

   echo $count." ";

}

 

test();

 

打印结果为1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1 0

 

可以看出,static global 都是属于引用传递。

  可变变量,多个美元符号

 

$a='hello';

$$a="world";//相当于$hello="world"

echo$a." ".$hello;// $a." ".$$a 一样

 

打出hello world


需要注意,如果在数组,或者对象中,需要按情况添加大括号

比如:

当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]

所以上例中最好写为

Echo$a." ".${$a} ;

增加易读性。

 

<?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";//相当于$foo->bar

echo $foo->$baz[1] . "\n";//先取出$baz的第二个元素,就是bar,所以相当于$foo->bar

 

$start 'b';

$end   'ar';

echo $foo->{$start $end} . "\n";//先拼接花括号内的字串为bar,所以相当于$foo->bar

 

$arr 'arr';

echo $foo->$arr[1] . "\n";//先取出arr的第二个元素,就是r,所以相当于$foo->r

echo $foo->{$arr}[1] . "\n";//有大括号,相当于$foo->arr中的第二个元素,也就是I am B

 

?>

以上例程会输出:

I am bar.

I am bar.

I am bar.

I am r.

I am B.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值