为何输出10,而非100?全局变量和局部变量问题
输出10
<?php
$num = 10;
function abc($num){
$num *= 10; // $num = $num * 10;
return $num;
}
abc($num);
echo $num; // 10
输出100
<?php
$num = 10;
function abc($num){
global $num; // $GLOBALS['num'] *= 10;
$num *= 10; // $num = $num * 10;
return $num;
}
abc($num);
echo $num; // 100
输出1、b
<?php
function a($param){
$param[0] = 3;
}
function b($param){
$param->name = 'b';
}
class User{
public $name = 'a';
}
$param1 = array(1,2,3);
$param2 = new User();
a($param1);
b($param2);
echo $param1[0]; // 1
echo $param2->name; // b
输出3、b
<?php
function a($param1){
global $param1;
$param1[0] = 3;
}
function b($param){
$param->name = 'b';
}
class User{
public $name = 'a';
}
$param1 = array(1,2,3);
$param2 = new User();
a($param1);
b($param2);
echo $param1[0]; // 3
echo $param2->name; // b
PHP变量
PHP变量规则
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
PHP 有三种不同的变量作用域:
- local(局部)
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
- global(全局)
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
- static(静态)
PHP global 关键词
global 关键词用于访问函数内的全局变量。
要做到这一点,请在(函数内部)变量前面使用 global 关键词
PHP static 关键词
通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。
要完成这一点,请在您首次声明变量时使用 static 关键词
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
}
myTest(); // 0
myTest(); // 1
myTest(); // 2
网友评论