3、PHP中变量和常量的区别

阅读() @2018-07-15 14:13:32

关于变量:

1、什么是变量:与Javascript类似,PHP中的变量相当于开辟了一块儿内存空间,变量的数据类型可以是string、num、boolean等。

2、定义变量的方法:$符号加英文字母(区分大小写)、数字或下划线,但是不能以数字开头。变量名称可以是中文,但不推荐使用中文。

3、可变变量:把一个变量的值作为另一个变量的名,代码如下:

$user = 'zym';
$$user = '赵一鸣';
echo $zym;//赵一鸣

4、外部变量:存储外部传入的值的变量:

$_GET[]:在地址栏中会显示传入的值,不安全。

<form action="" method="get">
	<input type="text" name="username">
	<input type="submit" value="提交">
</form>
<?php
	echo $_GET[username];
?>

$_POST[]:在地址栏中不显示传入的值,比较安全,可以上传大容量的文件,比如图片、office文档等。

<form action="" method="post">
      <input type="text" name="username">
      <input type="submit" value="提交">
</form>
<?php
    echo $_POST[username];
?>

$_REQUEST[]:同时接收get和post方式传递的参数(借用以上代码),但是传输速度比较慢。

5、定义变量时“传址”与“传值”的区别:

传值:b变量引用a变量的值,当a变量改变时,b变量不会改变。

<?php
	$username = 'zym';
	$webname = $username;
	$username = '赵一鸣';
	echo $webname;//zym
?>

传址(&):b变量引用a变量的值,当a变量改变时,b变量也改变。

<?php
	$username = 'zym';
	$webname = &$username;
	$username = '赵一鸣';
	echo $webname;//赵一鸣
?>

关于常量:

1、什么是常量:值始终保持不变的单元(常量一经定义,不能随便改变它的值)。

2、常量定义方法:define("常量名","值"),为了与变量区别开来,常量名一般使用大写。

<?php
    define('WEBNAME','zymseo');
    define('WEBNAME','baidu');
    echo WEBNAME;//zymseo
?>

3、常量的值只能是标量(字符串、整型、浮点型、布尔型),不能是数组或函数。

4、函数内部可以读取函数外部的常量;函数内部不能读取函数外部的变量!

<?php
	define('WEBNAME','zymseo');
	$webname = 'zymseo.com';
	function fn(){
		echo $webname.'<br/>';//
		echo WEBNAME;//zymseo
	}
	fn();
?>

函数外部可以读取函数内部的常量(在此之前函数已经运行了),函数外部不能读取函数内部的变量,除非定义成global全局变量。

<?php
	function fn(){
		$webname = 'zymseo';
		define('WEBNAME','zymseo');
	}
	fn();
	echo $webname.'<br/>';
	echo WEBNAME;
?>

5、默认的系统常量:

echo M_PI."<br/>";//301415926
echo PHP_OS."<br/>";//操作系统
echo PHP_VERSION."<br/>";//php版本

6、魔术常量(所处环境不同,返回的值也不同):

<?php
	echo __LINE__;//当前代码在第几行
	echo __FILE__;//当前文件系统路径
	function fn(){
		echo __FUNCTION__;//当前函数的函数名称
	}
	fn();
?>
class Channel{
	public function show1(){
		return __CLASS__;//获得当前类的类名
	}
	public function show2(){
		return __METHOD__;//获得当前类的方法
	}
	public function show3(){
		return __FUNCTION__;//获得当前函数的函数名
	}
}
$channel = new channel();
echo $channel->show1();//Channel
echo $channel->show2();//Channel::show2
echo $channel->show3();//show3

dirname()函数或者是__DIR__返回当前文件路径中的目录部分,为了保持兼容,一般用dirname()函数。

DIRECTORY_SEPARATOR表示分隔符。

echo dirname(__FILE__).'<br/>';//D:\wamp\www
echo DIRECTORY_SEPARATOR.'<br/>';// \
echo __DIR__.'<br/>';//D:\wamp\www

 

微信二维码
锐壳主机