<?php
// 变量作用域
/**
1. local作用域
2. global作用域
3. static作用域
4. parameter作用域
*/
// local作用域,随着函数的结束而销毁。
function test() {
// local scope
$name = 'zhangsan';
echo $name . PHP_EOL;
}
test();
// global scope定义,在函数外面定义
$name = 'lisi';
function test2() {
// global变量 需要声明一下才可以访问
global $name;
echo 'name is ' . $name . ' in test2 function.' . PHP_EOL;
// 修改全局变量
$name = 'wangmazi';
}
function test3() {
global $name;
echo 'name is ' . $name . ' in test3 function.' . PHP_EOL;
}
test2();
test3();
// php内部会把所有的global变量,都存储在GLOBALS全局数组中,索引是global变量的名字
// 例如 global $name变量实际上是存储在$GLOBALS['name']中的。
echo 'global name = ' . $GLOBALS['name'] . PHP_EOL;
// static作用域, 在函数退出之后,再次调用时,static变量会记住上一次的值
// static仍然是一个局部变量,在外部无法访问到
function test4() {
static $counter = 0;
echo 'counter is ' . $counter . PHP_EOL;
$counter = $counter + 1;
}
test4();
test4();
test4();
// static $counter是在test4 function内部定义的,属于局部变量,在函数外部无法访问
echo 'counter is ' . $counter . PHP_EOL;
// parameter scope
// $x和$y属于参数作用域,随着函数的结束而销毁。
function test5($x, $y) {
echo 'parameter 1 is ' . $x . PHP_EOL;
echo 'parameter 2 is ' . $y . PHP_EOL;
}
?>
网友评论