<?php
/*
介绍:变量的赋值,值传递和引用传递的区别,可变变量
作者:赵某~
实践:2018/11/4
*/
// 值传递
$var1 = 'php'; # 定义两个变量
$var2 = 'C++';
$var1 = $var2; # 赋值
echo '$var1 : '.$var1.'<----->'.'$var2 : '.$var2; # 打印两个变量,从结果可以看出两个变量值一样
$var2 = 'Python'; # 改变其中一个变量的值
echo '<br>';
echo '$var1 : '.$var1.'<----->'.'$var2 : '.$var2; # 再次打印,发现二者不同
/*
结论:值传递就是将一个变量的值拷贝一份并赋值给这个变量
他们两个互不影响,有自己的内存空间
*/
// 引用传递,用'&'符号
echo '<hr>';
$var3 = &$var1; # 将变量var1的引用传递给变量$var3
echo '$var1 : '.$var1.'<----->'.'$var3 : '.$var3; # 打印结果,二者想用
$var3 = 'Java'; # 改变其中一个变量的值
echo '<br>';
echo '$var1 : '.$var1.'<----->'.'$var3 : '.$var3; # 再次打印,发现二者相同
/*
结论:引用传递传递的是地址,两个变量共用一块内存,相当于给一个变量起了一个别名
*/
// 可变变量
echo '<hr>';
$chVar = 'PageTitle';
$$chVar = 'Headline'; # 相当于定义一个新变量PageTitle
echo $chVar;
echo '<br>';
echo $$chVar;
echo '<br>';
echo $PageTitle;
echo '<hr>';
// 变量作用域
// 四种:局部、全局(外部)、超级全局变量、静态变量
// 一、全局变量
$siteName = 'www.php.com';
function getSiteName(){
$siteName = 'PHP Chinese';
return $siteName;
}
echo $siteName; # 此时访问的是全局变量
echo '<br>';
echo getSiteName();
echo '<hr>';
print '<pre>';
print_r($GLOBALS); # 在PHP中有一个全局变量GLOBALS,是一个数组,包含了该脚本中所有的全局变量,可以穿透函数来使用
print '</pre>';
echo '<hr>';
echo $GLOBALS['siteName']; # 键值就是变量名
echo '<hr>';
function getDomain(){
return 'Domain Name Is : '.$GLOBALS['siteName'];
}
echo getDomain().'<hr>'; # 全局数组$GLOBALS可以穿透函数来使用
// 静态变量可以在多个调用中共享
function Sum(){
static $add = 10;
return $add += 10;
}
echo Sum().'<br>'.Sum().'<br>'.Sum().'<hr>'; # 静态变量每次调用的结果保留给下次调用
?>