您的位置:

php变量规范,php基本变量类型

本文目录一览:

php变量命名问题

php里命名一个变量以$符打头,后面跟变量名称,和其他很多语言一样,变量名只能以字母、数字、下划线组成,不能包含空格、标点符号、运算符等其它符号,不能使用程序语言关键字作为变量,按照规范的来讲的话变量名称应该要精简,且有寓意。

PHP的变量名长度最长允许多少啊?

PHP变量名长度是不受限制的。

可以任意的长。

回答了把,不过建议开发时候还是采取比较容易理解和简短的名字。

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 中获取 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=$one;//相当于传地址,两个变量指向一个地址

//动态变量

$one="######";

$two="one";

$three="two";

echo $three."br";//输出"two"

echo $$three."br";//输出"one"

echo $$$three."br";//输出"######"

//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=test

this write content......

test;

?

php 变量解析

第一个问题的确需要仔细分析:

①首先,你得知道,在双引号中的字符串输出时,变量必须得用它的值取代:如$a=100;

就有"$a"="100";

②其次,php在读双引号中的内容时,一旦遇到$,就希望找到一个最可能的变量。现在看"A banana is $fruits[banana].";这一句,php顺着$往下找找到了[,[是数组索引的标志,如果在找到与之配对的]之前不出现非法字符,php很自然的就把整个式子$fruits[banana]当成了整个变量,所以这样写是对的

③与②对应的"A banana is $fruits['banana'].";错在哪应给就清楚了吧?php找到[之后,觉得这是个数组,但紧接着它又找到了',这是他不能够接受的,如果它仍旧把$fruits['banana']当做变量,就会出现变量名字里边出现非法字符'和'的错误。注意这些都是在双引号里边给以讨论的

④那为什么 "A banana is {$fruits['banana']}."; 就可以呢?因为{}的意思我们应该都了解的,用在语法里边{}就像是一个个语句岛,除了全局变量和常量,{}里边的东西和{}外边的东西基本是隔绝的,也就是说{}里边的语法是不受外边的双引号影响的。所以写法就符合平常的语法了

⑤其实{$fruits['banana']}是正确的而{$fruits[banana]}是错误的,但为什么php不报错呢?对php而言,数组的[]里边只能是字符串和int值,那么$fruits[banana]是什么呢?php里边带$的是变量,加单引号或者双引号的是字符串,那么banana会是什么呢?对了,是常量!php觉得你这里写的banana是个值可能为int或字符串的常量,所以它觉得写的挺合理的。但是你实际上并没有定义这个常量,所以肯定会出错的

至于你的第二个问题,这是php的字符串连接问题。$fruits['banana']的值是一个字符串,那么当你把它和另一个字符串"echo A banana is "接在一起的时候肯定的需要特定的符号了。一般的语言用的是+,php用的是.

你直接打印这个字符串当然是可以的了。

怎么样?解释的够清楚吧?可以给分了吧?呵呵,打字快累死了,要劳有所得啊,还有什么问题的话联系我,我们再讨论!

要写一个PHP,定义一个变量,并设定为指定的网址

把这部分改成指定值并隐藏,就可以了。

!--li strong网址/strong--

input id="tougao-url" class="input-block-level" type="hidden" value="http://你设置的URL" size="100"

php全局变量和php预定义变量

仅供参考,更多,可以查看

预定义变量

PHP 提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档。一些预定义变量在 PHP 以命令行形式运行时并不生效。有关这些变量的详细列表,请参阅预定义变量一章。

Warning

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

更多相关信息,请阅读 register_globals 的配置项条目,安全一章中的使用 Register Globals,以及 PHP » 4.1.0 和 » 4.2.0 的发行通告。

如果有可用的 PHP 预定义变量那最好用,如超全局变量。

从 PHP 4.1.0 开始,PHP 提供了一套附加的预定数组,这些数组变量包含了来自 web 服务器(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效。因此通常被称为自动全局变量(autoglobals)或者超全局变量(superglobals)。(PHP 中没有用户自定义超全局变量的机制。)超全局变量罗列于下文中;但是为了得到它们的内容和关于 PHP 预定义变量的进一步的讨论以及它们的本质,请参阅预定义变量。而且,你也将注意到旧的预定义数组($HTTP_*_VARS)仍旧存在。自 PHP 5.0.0 起,长格式的 PHP 预定义变量可以通过设置 register_long_arrays 来屏蔽。

Note: 可变变量 超级全局变量不能被用作可变变量。

Note: 尽管超全局变量和 HTTP_*_VARS 同时存在。但是他们并不是同一个变量,所以改变一个的值并不会对另一个产生影响。

如果某些 variables_order 中的变量没有设定,它们的对应的 PHP 预定义数组也是空的。

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 数组(依然有效,但反对使用)。详细信息请参阅 POST 方法上传。

$_ENV

执行环境提交至脚本的变量。类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用)。

$_REQUEST

经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。此数组在 PHP 4.1.0 之前没有直接对应的版本。参见 import_request_variables()。

Caution

自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中。

Note: 当运行于命令行模式时,此数组将不会包含 argv 和 argc 条目;它们已经存在于数组 $_SERVER 中。

$_SESSION

当前注册给脚本会话的变量。类似于旧数组 $HTTP_SESSION_VARS 数组(依然有效,但反对使用)。