您的位置:首页 > 编程语言 > PHP开发

php学习笔记--2. 变量

2014-09-02 01:56 441 查看
命名规则

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: