0

0

PHP3中文文档(续2)

php中文网

php中文网

发布时间:2016-06-21 09:10:30

|

938人浏览过

|

来源于php中文网

原创

中文

从HTML中脱离
    这儿有三种方法从HTML中脱离,同时加入“PHP代码模式”

    Example 5-1. 从HTML中脱离的方法

1. echo("this is the simplest, an SGML processing instruction\n"); ?>

2. php echo("if you want to serve XML documents, do like this\n"); ?>

3. ;

4.

语句的脱离方法
    语句的脱离方法和C及PERL是一样的------终止每一个语句时使用分号(;)。

    结束标签(?>)也暗示了说明的结束,所以下面的两句话是等价的:


echo "This is a test";

?>

 



变量类型
    PHP支持如下的变量类型:

integer :整数
double :双精度数
string :字符串
array :队列数组
object :对象
pdfdoc (only if enabled PDF support) :PDF文本(仅仅在起用PDF支持之后生效)
pdfinfo (only if enabled PDF support) :PDF信息(仅仅在起用PDF支持之后生效)
    这些变量的类型通常不由程序员来设置;特别的,它在运行时由PHP依据上下文来设置使用什么类型。

    如果您喜欢强制将某个变量转换到指定的类型,您还可以对该变量进行“cast”操作,或者使用函数“settype()”。

 

    注意这些变量可能会在确定的情形下被不同的控制者使用,这依赖于此时该变量的类型是什么。想要获得更进一步的信息,请参考“Type Juggling”部分。

变量的初始化
    在PHP中初始化一个变量,您只需要简单的分派给它一个值即可。对于大多数类型,这样做是十分简单的;但是对于类型“Array(数组)和Objects(对象)”来说,需要使用有些不同的方法。

初始化数组
    一个数组可以使用如下的方法来初始化:使用连续的指定值,同时使用“array()”结构(这将在“Array 函数函数说明部分中被证明)。

 

    对一个数组(Array)变量连续的添加值。您简单指定无标号的Array变量的值即可。这些值会添加在该Array变量最后的元素中。

 

$names[] = "Jill"; // $names[0] = "Jill"

$names[] = "Jack"; // $names[1] = "Jack"

 

    和在C和Perl中一样,数组元素的开始号码是0而不是1。

初始化object(对象)变量
    要初始化object变量,您使用下面例子中所示的申明方法:

class foo {

function do_foo () {

echo "Doing foo.";

}

}

$bar = new foo;

$bar -> do_foo ();

变量的活动范围
    变量的活动范围仅仅限于定义它的上下文。对于绝大多数部分中所有的PHP变量仅仅只有单独的活动范围。然而,在用户自定义的函数中,引入了一个本地函数范围的概念。在这个函数中使用的任何变量缺省被限制在该函数的本地函数范围之中。例如:

 

$a = 1; /* global scope */

Function Test () {

echo $a; /* reference to local scope variable */ }

Test ();

 

    这段脚本将不会造成任何的输出,因为给显示的提交给本地译文的变量“$a”的申明,同时这个变量没有在它的活动范围中被指定一个值。您可以注意到这和C语言有一些不同,在C语言中全局变量是自动被设定为可用的,除非在函数中进行了特别的说明。由于人们可能会不小心的改变了全局变量的值,所以这可会在程序中导致许多问题。在PHP中全局变量必须在一个函数中被公告,如果想要在这个函数中使用它的话。例子如下:

 

$a = 1;

$b = 2;

Function Sum () {

global $a, $b;

$b = $a + $b;

}

Sum ();

echo $b;

 

    上面的脚本将输出“3”。在函数中申明了全局变量$a和$b,任何对这两个变量的引用都被指定到了该全局变量。这里没有函数可以操作的限制全局变量的数目。

 

    第二种接受全局变量的方法是使用PHP特殊的定义数组$GLOBALS,例子如下所示:

$a = 1;

$b = 2;

 

Function Sum () {

$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];

}

 

Sum ();

echo $b;

 

    $GLOBALS数组是一个联合数组使用“global”为变量的名字,全局变量作为该变量数组其中某个元素的值。

 

    另一个关于变量活动范围的重要特性是“静态变量”。一个静态变量仅仅在本地函数的活动范围中存在,但是当程序离开这个范围时,它的值并不丢失。请参考下面的例子:

 

Function Test () {

$a = 0;

echo $a;

$a++;

}

 

    这个函数每次被调用时都把变量$a置为0同时打印“0”,所以几乎是没有作用的。表达式“$a++”将增加变量的值,但是每次退出函数时变量$a就消失了。想要使用一个不丢失当前计算的记数函数,用户可以将变量$a设置为静态的,示例如下:

 

Function Test () {

static $a = 0;

echo $a;

$a++;

}

 

    现在,每一次当Test()函数被调用的时候,它将打印出变量$a和它当时增加之后的数值。

 

    当函数被递归调用的时候,使用静态变量是一种很重要的方法。递归函数就是可以调用自身的函数。当编写递归函数的时候,必须注意可能会发生的循环定义。您必须有一个适当的方法来中断这个递归过程。下面的例子递归了10次:

 

Function Test () {

static $count = 0;

$count++;

echo $count;

if ($count
Test (); }

$count--;

}

变化变量
    有些时候使用变化变量是十分方便的。也就是说,一个变量的名字将被动态的设置和使用。一个普通的变量将会使用如下的申明:

 

    $a = "hello";

 

    一个变化变量获得一个变量的值,并将其视该变量的名字。在上面的例子中,“hello”,能够使用变量的名字加上两个$来进行使用,例如。

 

    $$a = "world";

 

    在这一点上,两个变量被定义和存储在PHP的符号树上;$a的内容为“hello”,而$hello的值为“world”。因此如下的申明:

 

    echo "$a ${$a}";

 

    制作了和如下确切相同的输出:

 

    echo "$a $hello";

 

    他们都输出:“hello world”

 

    要在数组中使用变化变量,您必须解决一个含糊的问题。它是:如果您写入了“$$a[1]”,然后解析程序将需要知道您想使用$a[1]作为变量还是使用$$a作为变量,这样索引“[1]”可能就会发生歧义。解决这种歧义的语法如下:“${$a[1]}”或者使用“${$a}[1]”(对上述的第二种情况)。

外界PHP变量
    HTML表单(GET和POST)

    当表单被提交给PHP脚本时,从该表单获得的变量将自动的被该PHP脚本设置为可用。请参考如下示例:

 

    Example 5-2. Simple form variable (简单的表单变量)



Name:






    当提交之后,PHP将建立一个变量“$name”,它将包含任何在表单中输入在“Name”中的内容。

 

    PHP同时也知道如何安排表单变量的上下文关系,但是仅仅限于一次。您可以,例如,将一组变量同时叙述,或者使用这个特性来重新从多重选择输入中获得值:

 

    Example 5-3. More complex form variables



Name:


Email:


Beer:








 

    如果PHP的track_var特性被打开了,任何关于它的结构设置或者指示,然后经由POST或GET模式的变量提交将发觉使用全局联合数组“$HTTP_POST_VARS”和“$HTTP_GET_VARS”是合适的。

 

    图形提交变量名字

    当提交一个表单时,有可能使用一幅图象来代替标准的带标签的提交按钮,例如:

 

    

 

    当用户点击该图象的任何位置时,相应的表单将被使用两个附加的变量(sub_x和sub_y)来传送到服务器上。他们包含用户点击在该图形上的相应位置信息。这将包含从浏览器发出的真实变量名字(甚至包含下划线),但是PHP将会把它自动的转化成带下划线的形式。

 

    HTTP Cookies

    PHP当然的支持使用Netscape's Spec定义的HTTP Cookies。Cookies是一种在远程浏览器上存放数据的装置,用于跟踪和鉴定用户的身份。您可以使用SetCookie()函数来对cookies进行设置。Cookies是HTTP头的一部分,所以SetCookie程序必须在被进行向浏览器输出前被调用。这和Header()函数的设置是类似的。任何从服务器送到用户处的cookies将自动的被转化成为一个PHP变量,就象使用GET和POST模式的数据一样。

 

    如果您希望对单个的cookie分派多值,只要在cookie的名字后面简单的加上一个“[ ]”即可。例如:

 

    SetCookie ("MyCookie[]", "Testing", time()+3600);

 

    注意,如果不是在您的浏览器上的域或者路径不一样的话cookie将会使用相同的名字来顶替先前的一个cookie。所以,对于购物单应用程序,您可能希望保持一个计数器同时通过cookie来传送它,例如:

 

Example 5-4. SetCookie Example (设置Cookie的例子)

$Count++;

SetCookie ("Count", $Count, time()+3600);

SetCookie ("Cart[$Count]", $item, time()+3600);

 

环境变量

    PHP自动的使用环境变量作为PHP的普通变量,例子如下。

 

    echo $HOME; /* Shows the HOME environment variable, if set. */

 

    既然信息随同GET,Post,Cookie等机制被传递进来,并且自动创建了PHP变量,有时最好是准确的从外界环境中读出一个变量以确信你正在使用正确的版本。getenv()函数就是做这个工作的,你也可以使用putenv()函数来设置一个环境变量。

服务器设置指示
变量类型变化(juggling)

    PHP不需要(或者说不支持)在声名变量明确他的变量类型;一个变量的类型是由这个变量被使用的前后关系来决定的,也就是说,如果你给一个变量var赋了一个字符串的值,var就变成了字符串变量。如果你再将一个整数赋值给var,他又变成了一个整数型变量。

    一个PHP自动转化变量类型的例子是加法的操作符’+’。如果任何一个操作数都是双精度数,那么所有的操作数被当作双精度数求值,并且结果也是双精度数。否则,操作数将被认为是整数,结果也将会是整数。注意这并不影响每个操作数本身的变量类型,唯一的变化就是操作数在计算的过程中被如何处理。

$foo = "0"; // $foo 是一个字符串 ,值是“0”(ASCII 48)

$foo++; // $foo 是一个字符串,值是“1”(ASCII 49)

$foo += 1; // $foo 现在是一个整数(2)了

$foo = $foo + 1.3; // $foo 现在是一个双精度数(3.3)了

$foo = 5 + "10 Little Piggies"; // $foo 是一个整数 (15)

$foo = 5 + "10 Small Pigs"; // $foo 是一个整数 (15)

 

    如果你觉得上面例子中最后两个表达式看起来有点奇怪的话,请看 “字符串的转化”部分。

    如果你希望强制一个变量被当作某种固定的类型来计算,请看 “类型强制(casting)” 一节。如果你希望转变一个变量的类型,请看函数“settype()”的说明。

 

    确定一个变量的类型

    因为PHP自己决定变量的类型并且一般按照需要转化他们,一个特定的变量的类型不是在任何时间都非常明显。PHP包括一些函数可以找出这个变量的类型。这些函数是gettype(), is_long(), is_double(), is_string(), is_array(), 和 is_object().

 

    类型强制(type casting)

    在PHP中类型强制同在C语言中大抵相似:将需要的类型的种类写在要强制的变量的前面的圆括号中。

$foo = 10; // $foo 是一个整数

$bar = (double) $foo; // $bar 是一个双精度数

以下的强制方式是允许的:

(int), (integer) – 强制成整数

(real), (double), (float) – 强制成双精度数

(string) – 强制成字符串

(array) – 强制成数组

(object) – 强制成对象

注意在圆括号中允许制表符(tabs)和空格(spaces) ,因此下面的语句是等价的:

$foo = (int) $bar;

$foo = ( int ) $bar;

 

字符串转化

    当一个字符串被当作数字型的值来计算时,他的结果和类型如下面所述的决定。

    如果这个字符串含有字符’.’,’e’,或者’E’,则被当作双精度类型变量来处理,否则当作是整数。

    这个字符串的值由词首部分决定。如果这个字符串以任何有效的数字的数据开始,那么这个数字数据就是这个字符串参加运算的值。否则,值为零(zero)。有效的数字数据是遵循下面的这些标记的,跟随在一个或多个数字后面(可以包含小数点),跟随在一个可选的指数后面。指数是由一个或多个数字跟在’e’或’E’后面构成的。

 

$foo = 1 + "10.5"; // $foo 是双精度数 (11.5)

$foo = 1 + "-1.3e3"; // $foo 是双精度数(-1299)

$foo = 1 + "bob-1.3e3"; // $foo 是整数 (1)

$foo = 1 + "bob3"; // $foo 是整数 (1)

$foo = 1 + "10 Small Pigs"; // $foo 是整数 (11)

$foo = 1 + "10 Little Piggies"; // $foo 是整数 (11);

// 这个字符串包括字符'e'

    为了获取更多信息,请参考Unix手册关于strtod(3)的部分。

数组操作
    PHP同时支持标量数组(scalar array)和关联数组(associative arrays)。事实上,这两者之间没有任何区别。你可以使用函数list()或array()来创建数组,或者你可以明确的设置每一个数组元素的值。

$a[0] = "abc";

$a[1] = "def";

$b["foo"] = 13;

    你也可以通过向数组里添加数值来创建数组。

$a[] = "hello"; // $a[2] == "hello"

$a[] = "world"; // $a[3] == "world"

    数组可以通过函数 asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), 和ksort() 来进行排序,具体使用那一个函数要根据你所想的排序的类型来定。

    你可以使用cunt( )函数来统计数组中元素的个数。

    你可以使用next()和prev()函数来遍历数组。另一个普通的遍历数组的方式是使用函数each()。



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

12

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

200

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

98

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

15

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

16

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

9

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

56

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

28

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 15.2万人学习

Pandas 教程
Pandas 教程

共15课时 | 1万人学习

C# 教程
C# 教程

共94课时 | 8.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号