PHP 中变量 常量的定义与用法

变量用于存储值,比如数字、文本字符串或数组。

一旦设置了某个变量,我们就可以在脚本中重复地使用它。

PHP 中的所有变量都是以 $ 符号开始的。

在 PHP 中设置变量的正确方法是:

$var_name = value;PHP 的入门者往往会忘记在变量的前面的 $ 符号。如果那样做的话,变量将是无效的。

让我们试着创建一个存有字符串的变量,和一个存有数值的变量:

如果对于变量和常量的定义,你会注意几个方面呢?你可能会想到:

如何定义变量,它和C# 等语言有什么不同呢?
变量区分大小写吗?
PHP的变量还有其他重要的吗?

常量和变量的定义一样吗?
 分别讲述吧。
1.如何定义变量,它和C# 等语言有什么不同呢?
   PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。例如:
<?php教程
 $var='Jim';
  $VAR='Kimi;
  echo "$var,$VAR";//输出“Jim,Kimi"
 ?>你可能还关心变量的命名,其实和大多数语言一样。
2. 变量区分大小写吗?
   如 1里说的,区分大小写。
  注意,需要说明的一点是自PHP4以来,引入了引用赋值的概念,其实和多数语言的引用类似,不过我觉得最类似的是C/C++.因为它也用到了"&"符号。例如:  1 <?php
2 $foo = 'Bob';              // 赋值'Bob'给foo
3 $bar = &$foo;              // 通过$bar引用.注意&符号
4 $bar = "My name is $bar";  // 修改 $bar
5 echo $bar;
6 echo $foo;                // $foo 也修改了.
7 ?> 和其他语言一样,只能对有变量名的变量才可以引用。
3. PHP其他重要点
预定义变量
预定义变量在PHP是一个重要的概念。 PHP 提供了大量的预定义变量。由于许多这些变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档。一些预定义变量在 PHP 以命令行形式运行时并不生效。

需要注意的是 在PHP 4.2.0 以及后续版本中,PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT,又如,使用 $_GET['id'] 来代替 $id 从 URL http://www.example.com/test.php?id=3 中获取 id 值,亦或使用 $_ENV['HOME'] 来代替 $HOME 获取环境变量 HOME 的值。

从 PHP 4.1.0 开始,PHP 提供了一套附加的预定数组,这些数组变量包含了来自 web 服务器(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效。因此通常被称为自动全局变量(autoglobals)或者超全局变量(superglobals)。(PHP 中没有用户自定义超全局变量的机制。)超全局变量罗列于下文中;而且,你也将注意到旧的预定义数组($HTTP_*_VARS)仍旧存在。自 PHP 5.0.0 起,长格式的 PHP 预定义变量可以通过设置 register_long_arrays 来屏蔽。
下表是PHP的超全局变量:
超全局变量
 描述
 
$GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键名为全局变量的名称。从 PHP 3 开始存在 $GLOBALS 数组。
$_SERVER 变量由 web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
$_GET 经由 URL 请求提交至脚本的变量。类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用)。
$_POST 经由 HTTP POST 方法提交至脚本的变量。类似于旧数组 $HTTP_POST_VARS 数组(依然有效,但反对使用)。
$_COOKIE 经由 HTTP Cookies 方法提交至脚本的变量。类似于旧数组 $HTTP_COOKIE_VARS 数组(依然有效,但反对使用)。
$_FILES 经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)
$_ENV 执行环境提交至脚本的变量。类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用)。
$_REQUEST  经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。此数组在 PHP 4.1.0 之前没有直接对应的版本。参见 import_request_variables()。
$_SESSION 当前注册给脚本会话的变量。类似于旧数组 $HTTP_SESSION_VARS 数组(依然有效,但反对使用)
变量的应用范围
 每个变量都有应用范围,那么PHP是怎么定义的呢?还是先看看下面代码吧:
 1 <?php
 2  $var=0;
 3  function test($index)
 4  {
 5      $var=$var+1;
 6      echo "The ".$index." number is ".$var."<br>";
 7  }
 8  test(1);
 9  test(2)
10 ?>你认为以上的代码会显示什么结果呢?
如果你认为是下面:
结果1:
The 1 number is 1
The 2 number is 2不好意思,你的结果是错误的。
其实正确的结果应该是:
结果2
The 1 number is 1
The 2 number is 1那么你从其中发现了什么呢?我们可以知道虽然第2行的代码定义在外面,但第5行的变量和它是不一样的。第5行的变量仅在这个函数里使用。进一步的,如果我想调用第一行的变量而显示结果2.代码可以如下:
 1 <?php
 2  $var=0;
 3  function test($index)
 4  {
 5      global $var;
 6      $var=$var+1;
 7      echo "The ".$index." number is ".$var."<br>";
 8  }
 9  test(1);
10  test(2)
11 ?>这个代码段和上面的代码段有何区别呢?注意第5行,多了一个global关键字。明白了吧。
那么还有没有其他方法呢?答案是肯定的。
代码如下:
 1 <?php
 2  $var=0;
 3  function test($index)
 4  {
 5     
 6      $GLOBALS["var"]=$GLOBALS["var"]+1;
 7      echo "The ".$index." number is ".$GLOBALS["var"]."<br>";
 8  }
 9  test(1);
10  test(2)
11 ?>代码有什么特殊的吗?那就是用到了$GLOBALS这个超全局变量。
PHP也有静态变量的说法。不过静态变量一般用在函数里,只能是局部变量了。看看下面代码吧:
 1 <?php
 2 function Test()
 3 {
 4    static $a = 0;
 5    echo $a."<br>";
 6    $a++;
 7 }
 8 Test();
 9 Test();
10 ?> 结果为
1
2
PHP还有一个相当令人兴奋的特性:可变变量
所谓可变变量,就是一个变量的变量名可以动态的设置和使用。
看看下面的例子:
1 <?php
2  $a="hello";
3  $hello="world";
4  echo $a." ".$$a;
5 ?> 输出的结果居然是hello,world.太神奇了。$$a其实就是$hello,因为$a的值是hello。
变量就这多了。下面看看常量。

常量
 PHP的常量是不是前面加const呢?让我们看一看。
不是的。在PHP必须用下面的方式定义。
bool define ( string name, mixed value [, bool case_insensitive] )
name 为常量名,value为常量的值。case_insensitive]为大小写敏感。默认为敏感。例如:
 1 <?php
 2 define("CONSTANT", "Hello world.");
 3 echo CONSTANT; // outputs "Hello world."
 4 echo Constant; // outputs "Constant" and issues a notice.
 5
 6 define("GREETING", "Hello you.", true);
 7 echo GREETING; // outputs "Hello you."
 8 echo Greeting; // outputs "Hello you."
 9
10 ?>

常量和变量不同:

常量前面没有美元符号($);

常量只能用 define() 函数定义,而不能通过赋值语句;

常量可以不用理会变量范围的规则而在任何地方定义和访问;

常量一旦定义就不能被重新定义或者取消定义;

常量的值只能是标量。

实例

<?php
$txt = "Hello World!";
$number = 16;
?>PHP 是一门松散类型的语言(Loosely Typed Language)
在 PHP 中,不需要在设置变量之前声明该变量。

在上面的例子中,您看到了,不必向 PHP 声明该变量的数据类型。

根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型。

在强类型的编程语言中,您必须在使用前声明变量的类型和名称。

在 PHP 中,变量会在使用时被自动声明。

<?php
 //引用
 $one="test";
 two=&amp;$one;//相当于传地址,两个变量指向一个地址

//动态变量
$one="######";
$two="one";
$three="two";

echo $three."&lt;br&gt;";//输出"two"
echo $$three."&lt;br&gt;";//输出"one"
echo $$$three."&lt;br&gt;";//输出"######"

//php中有8个类型
//4种标量:   int integer
//     bool boolean
//     float,double,real
//     string
//2种复合类型: array
//  object
//2种特殊类型:  资源类型 resource
//   空类型   null

  
//整数的声明  
$int=10; //十进制声明
$int=045;//八进制声明
$int=0xff;//十六进制声明
$float=3.14E+5;//科学计数法
$float=3.14E-5;

//一下都是false的情况
$bool=false;
$bool=0;
$bool=0.000;
$bool=null;
$bool="";
$bool=" ";
$bool="0";
$bool=array();

//字符串的声明
//1.单引号和双引号都可以声明字符串
//2.声明的字符串没有长度限制
//3.在双引号的字符串中,既可以直接解析变量,又可以直接使用转义字符(可以转义单引号本身,也可以转义转义字符"")
//4.在单引号的字符串中,不可以直接解析变量,也不可以使用转义字符
//5.在双引号中不能再使用双引号,在单引号中不能再使用单引号
//6.最好使用单引号,
$str='aaaaa';
$str="aaaa";
//定界符声明字符串,大量字符串
//test是自定义的一个字符串,后面不能有任何字符,空格也不可以
//也要以test这个自定义的字符串结束,结束前不能有任何字符
$str=&lt;&lt;&lt;test
this write content......
test;
?>

时间: 2024-09-21 02:45:04

PHP 中变量 常量的定义与用法的相关文章

jQuery中odd选择器的定义和用法_jquery

本文实例讲述了jQuery中odd选择器的定义和用法.分享给大家供大家参考.具体分析如下: 此选择器匹配索引值为奇数的元素,从0开始计数. 语法结构: 复制代码 代码如下: $(":odd") 此选择器一般也要和其他选择器配合使用,比如类选择器.元素选择器等等.例如: 复制代码 代码如下: $("li:odd)").css("color","green") 以上代码是将li元素集合中索引为奇数的li中的字体颜色设置为绿色. 如

jQuery中even选择器的定义和用法_jquery

本文实例讲述了jQuery中even选择器的定义和用法.分享给大家供大家参考.具体分析如下: 此选择器匹配所有索引值为偶数的元素,从0开始计数. 语法结构: 复制代码 代码如下: $(":even") 此选择器一般也要和其他选择器配合使用,比如类选择器.元素选择器等等. 例如: 复制代码 代码如下: $("li:even)").css("color","green") 以上代码是将li元素集合中索引为偶数的li中的字体颜色设置

jQuery中click事件的定义和用法_jquery

本文实例讲述了jQuery中click事件的定义和用法.分享给大家供大家参考.具体分析如下: 当鼠标指针在匹配元素上方,然后按下并松开鼠标左键或者调用click()方法都会触发click事件. click()方法也可以绑定事件处理方法. 语法结构一: 触发click事件. 复制代码 代码如下: $(selector).click() 语法结构二: 为click事件绑定事件处理方法. 复制代码 代码如下: $(selector).click(data,function) 参数列表: 参数 描述 d

javascript中parseInt()函数的定义和用法分析_javascript技巧

本文实例讲述了javascript中parseInt()函数的定义和用法.分享给大家供大家参考.具体分析如下: 此函数可以解析一个字符串,并返回一个整数. 语法结构: 复制代码 代码如下: parseInt(string, type) 参数列表: 参数 描述 string 必需.要被解析的字符串. type 可选.表示要解析的数字的基数,通俗的说就是数字的进制,比如二进制.八进制或者十六进制.该值介于2 ~ 36之间. 详细说明: 一.指定type参数: 指定type参数后,函数就会按照指定的t

PHP中extract()函数的定义和用法_php技巧

定义和用法 PHP extract() 函数从数组中把变量导入到当前的符号表中. 对于数组中的每个元素,键名用于变量名,键值用于变量值. 第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突. 本函数返回成功设置的变量数目. 语法 extract(array,extract_rules,prefix) 参数 描述 array 必需.规定要使用的输入. extract_rules 可选.extract() 函数将检查每个键名是否为合法

HTML5中&lt;!DOCTYPE&gt;标签的定义和用法

  HTML 5 <!DOCTYPE> 标签 定义和用法 <!DOCTYPE> 声明必须位于 HTML5 文档中的第一行,也就是位于 <html> 标签之前.该标签告知浏览器文档所使用的 HTML 规范. doctype 声明不属于 HTML 标签:tag; 它是一条指令,告诉浏览器编写页面所用的标记的版本. 在所有 HTML 文档中规定 doctype 是非常重要的,这样浏览器就能了解预期的文档类型. HTML 4.01 中的 doctype 需要对 DTD 进行引用

php中魔法常量_FILE_,_LINE_,__FUNCTION__用法

名称  描述   _FILE_  当前文件名   _LINE_  当前行号   _FUNCTION_  当前函数名   _CLASS_  当前类名   _METHOD_  当前方法名   所谓的魔法常量,并不是真的常量,而是根据场合去获取固定值的变量  代码如下 复制代码 <?php echo __FILE__; echo '<br>';   echo __LINE__; echo '<br>';   function funcTest() {     echo __FUNC

详解C语言中的#define宏定义命令用法_C 语言

#define命令#define定义了一个标识符及一个串.在源程序中每次遇到该标识符时,均以定义的串代换它.ANSI标准将标识符定义为宏名,将替换过程称为宏替换.命令的一般形式为: #define identifier string 注意: 1.该语句没有分号.在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束. 2.宏名定义后,即可成为其它宏名定义中的一部分. 3.宏替换仅仅是以文本串代替宏标识符,前提是宏标识符必须独立的识别出来,否则不进行替换.例如: #define XYZ th

C++中的常量定义小结_C 语言

本篇笔记总结自一次代码检视. 一般来说,使用C语言编程时我们都习惯在代码当中使用C当中的宏定义来定义一个数值常量: #define MY_CONST 7 在C++开发项目时,也会经常存在沿袭C当中常量用法情况.所以,如下的一种写法看起来反倒觉得有些不正宗了: class MyClass { static const int my_const = 7; // ... }; 站在编译器的角度,这两种写法都是合法的,但在使用的时候总得二中择一,究竟哪种更合适呢?之前有所耳闻在C++中应该尽可能少的使用