PHP_Day02_变量_值传递和引用传递的区别、可变变量、局部变量、全局变量、静态变量、$GLOBALS

<?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>';	# 静态变量每次调用的结果保留给下次调用
?>

猜你喜欢

转载自blog.csdn.net/IronMan240/article/details/83719909
今日推荐