变量作用域
定义在函数外部的是全局变量,作用域从定义处一直到文件结尾。函数内定义的变量是局部变量,作用域为函数定义范围内。函数之间作用域互不影响。
四种:local局部作用域\global全局作用域\static静态作用域\parameter参数作用域
global
在函数内调用函数外定义的全局变量,在函数中的变量前加上global关键字。
php中函数有独立的作用域,局部变量会覆盖全局变量,即使局部变量中没有全局变量相同的变量,也会被覆盖。
<?php
$x = 5;
$y = 10;
function test(){
global $x,$y;
$y = $x + $y;
}
?>
php将所有全局变量存储在$GLOBALS[index]数组中,index保存变量的名称,可以在函数内部调用这个数组,也可以通过它更改全局变量
<?php
$x = 5;
$y = 10;
function test(){
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
?>
static
当一个函数完成时,其所有变量都会被删除,当希望这个局部变量不被删除时,在第一次声明这个变量时使用static
function test(){
static $x = 0;
$x++;
}
test();
test();
test();
每次调用该变量时,会保留函数前一次被调用的值。(该变量仍然是函数的局部变量)
输出语句
echo 和 print
echo输出的速度比print快,echo没有返回值,print有返回值1。echo能接受n个字符串类型的参数,print只能接受1个字符串类型的参数。
echo
输出一个或多个字符串,多个值之间用逗号分隔,echo是语言结构,不是真正的函数,因此不能作为表达式的一部分使用。echo输出字符串,不能输出数组,可以输出数组中的一个元素,但要先保证这个元素是一个字符串而不是一个数组。
$name = "blue";
$arr = arr('blue','zarm','hhh');
echo "$name在学习php";
echo "我在{$arr[2]}地笑";
只允许输出一个字符串,如果字符串成功显示返回true,否则false。
print_r
可以把字符串和数字简单打印出来,数组以键值对形式打印。
var_dump
判断一个变量的类型和长度,并输出变量的数值。