脱水读 >  天涯 >  舞文弄墨 >  (原创)郎朗的计算机文学

(原创)郎朗的计算机文学

楼主:langlangname  时间:2021-04-01 04:32:26
(前言)大家好,又见面了,鸟之心魔郎朗是也,其实我一直没有透露我曾经2008年到2009年的时候在上海贝尔软件做过一年外派的软件工程师,拿着税后2500元的低薪在追求属于我自己的理想。其实,很多时候,写作跟计算机编程是有着共通性的,都需要坚持,都需要通过自己的努力来尝试实现自己的价值,到底PHP这一门编程语言对于我意味着些什么,其实我并不是非常想去尝试坚持,想要尝试通过echo来尝试输出自己曾经所犯过的所有错误,现实中的也好,还有虚幻的世界中的也罢,其实,很多时候,尝试忘记编程,尝试忘怀编程和写作应该必然产生的一些共通的东西,本来就是无法通过自己现实中的努力来尝试弥补的。每个人都渴望拥有一台属于自己的Web服务器来收容自己曾经所尝试过,修改过的很多网站的源代码,其实,现在网上很多开源的网站源代码,有些甚至有了代码的保护,这其实都不仅仅只是为了尝试保护版权或者是尝试想要保护自己现实中曾经努力过的编程结果,在现在的这个时代,写程序跟写作到底真正的共同点到底在哪里,其实,都是因为兴趣的驱使,同时也因为对于写作和对于编程的共通的兴趣,让整个世界的作家也好,程序员也罢,都能够通过这本书来尝试找到自己内心中真正所渴望中的那种样子。我们不仅仅只是因为尝试喜欢一门课程,计算机的也好,文学类的也罢,其实,计算机文学,看似好像有点不可能,但,这种不可能很多时候都是因为计算机和文学之间这种通过日积月累之后的堆积和积累之后,在程序员和作家的记忆深处烙印下很多看似能够忽略许久的东西。我们其实都应该通过我们自己的兴趣来找寻得到一些不一样的东西,同时,这本书就有点类似于我的计算机读书笔记一样,随时随地记录今天在计算机,在文学上的共通的收获,守候一件能够坚持许久的事,看似好像不可能,但其实,这种不可能,本来就仅仅只是因为我们都已经开始学会通过我们自己的努力来尝试改变得到这个现实中的生活。计算机给我们的现实生活带来了诸多的便利,同时也因为着计算机对于现实世界的贡献,让整个现实世界中的我们都开始学会感谢生活的同时,也不断地在感恩着我们现实中同样有点单调和乏味的计算机编程和单纯追求纯文学的那种枯燥感,也许,我们都应该通过我们自己现实中的努力来尝试找寻回我们身上那些跟计算机有关的东西,计算机编程对于作家到底意味着些什么,其实很多作家也在不断地摸索和研究中发现其实自己也可以通过文学的方式来成就一下自己能够成为编程者,作为开发人员的那种骄傲。其实,渴望一件事,曾经对计算机编程有过热情的我也许能够给大家带来点不一样的东西,同时也通过这种不一样,让我自己终于意识到,原来,意识深处,真正所渴望的那种东西,往往远远不如现实中自己对于文字,对于程序代码的那种渴望,那种渴求来得强烈。也许,我们都应该尝试说服自己相信其实我们的内心深处对于任何陌生的事物都是有着自己的考量和研究的。当然,也许,我们自己也应该学会通过书籍来更加充实地让自己充一会儿电,从复杂单调的现实的工作中发现其实热情可以很快地冲刷掉很多东西。郎朗的计算机文学相信能够伴随着大家一起成长,一起慢慢地继续成长起来,并让自己通过现实中自己的努力来不断地改善自己,完善自己的很多优缺点。同时,我们最后在反复读着书本中那些看似陌生的字眼的时候,我们也开始学会通过现实中我们自己的努力,来尝试找到这个世界中跟计算机,跟文学有关的那些东西。我们自己大脑中的数据库系统,也开始因为我们自己最刻意中的那个SELECT,最刻意中的那个DELETE,让我们终于发现,原来,很多时候,渴求一件事,对一件事有热情,一直都这样看似刻意,却也看似平凡着。计算机跟文学之间本身就能够存留有的关联,会通过我,通过电脑前的你,来尝试开启一条非常不同寻常的经历或者是冒险,大家,相信都会因为这本书而有所收获的。计算机文学,看似好像不可能,但,或许也是同样正常,同时也是同样另类的。尝试努力吸取过营养,至少必然也会有所收获,至少,在上海贝尔追求自己计算机理想的我对于我这本书的作用虽然不是很确信,但,我想,其实每个人都应该通过自己刻意坚持中的那些东西,来尝试让自己对自己更加有自信,有信心。计算机文学对于现实中的人们到底意味着些什么,其实坐在电脑前敲打这本书里面每个字句中的我其实并不是非常有确认。但,我想,或许,改变一件事的时候,也必然有尝试努力尝试做到一件事的时候,所必然经历过的那些平凡和那些烦恼。郎朗的计算机文学,伴随着复旦计算机信息管理自考本科这一件值得坚持许久的事,让我和你们都开始觉得,原来,我们也可以同样对于计算机和对于文学这么有热情,同时也这么敢于和勇于去这么坚持,去这么坚守下去。一直一直,直到我们彻底老去的时候,我们才终于发现,原来计算机,原来文学,看似好像很枯燥,但,却也一直这样在我们所认为的现实中变得更加有意义,更加有价值起来。这样以来,这本书的真正价值,就出现了,而且不会轻易消失在我们自己的记忆深处里,永永,伴随着远远。

楼主:langlangname  时间:2021-04-01 04:32:26
第一章(PHP)
PHP这门编程语言最开始的时候起源于1995年,一个名叫Rasmus Lerdorf的程序员开发了一个用Perl/CGI脚本编写的在线简历,这个脚本的作用是用来将访问这个在线简历的人员的信息写入日志(通过日志可以查看很多计算机当中的信息。)同时还能够显示这个网页访问者的数量(也就是提示你有多少人亲睐你的这一份在线简历。)。PHP(Personal Home Page个人主页)就是这样起源的,1997年11月发行了PHP 2.0,PHP其实从3.0版本开始全称正式改为PHP:超文本预处理器(PHP:Hypertext Preprocessor),PHP本来就可以用记事本这个程序来写,来阅读。没想到到发行3.0版本为止,已经有超过5万个用户在使用PHP改进其网页。其实,PHP不仅仅只是用来处理网页,在网站的开发过程中,使用PHP这一门语言的优势一直都很明显,而且,从未轻易改变和放弃过。到1999年初,两位核心开发人员(Zeev Suraski和Andi Gutmans)最终改写了PHP的解析器(也就是将PHP的代码解析为PHP网页),也就是所谓的Zend脚本引擎,这些工作最终导致了PHP4的发布。Zend是关于开发,部署和管理PHP应用的产品和服务的主要提供商。

PHP4添加了以下几项对该语言,对企业级应用来说的改进工作。
1:改进了资源处理,开始有很多企业尝试用PHP开发企业级网站。
2:面向对象的支持。其实所谓的对象,也就是现实世界中的所有东西。
3:内置的会话处理支持,这个特性使得开发人员可以相当高效率地跟踪用户活动和偏好。其实会话就相当于一次谈话,通过这次谈话,能够实现用户你愿意尝试做到的很多件事。
4:加密。亲密的人们之间都有着特定的语言来沟通,其他人是无法了解的。
5:ISAPI支持。能够将PHP与微软的IIS Web服务器结合使用。
6:内置COM/DCOM支持。其实这项功能也就是扩展了PHP与Windows应用程序的互操作性。
7:内置Java支持。PHP的应用程序能够绑定Java对象。
8:与Perl兼容的正则表达式(PCRE)库。

版本5是PHP语言发展历程中的另一座分水岭。
1. 极大地提高了面向对象能力。
2. try/catch异常处理。(try尝试/catch捕获)
3. 改进的XML和Web服务支持。
4. 对SQLite的内置支持。
PHP6的关键特性。
1. Unicode支持。(为了构建和维护多种语言的应用程序。)
2. 安全改进。
3. 新语言特性和构造。
全部的Apache安装中有40%都安装有PHP。说明PHP确实够流行,够疯狂。

1.September 23.2007的格式输出当前日期:
<?php echo date(“F j,Y”);?>
F代表月份,j代表日期,Y代表年份。

2.生成一个由5个字母或数字字符组成的字符串,如a3jh8:
$randomString=substr(md5(microtime(),0,5);
substr取字符串函数,md5加密函数。microtime(),返回当前时间的微秒数。

3<?php
$number=”5”; //$number是一个字符串。
$sum=15+$number;//添加一个整型和字符串用于生产出一个整型。
$sum=”twenty”; /将$sum覆盖为一个字符串。
?>
楼主:langlangname  时间:2021-04-01 04:32:26
PHP还会在脚本结束时自动撤销变量,将资源返回给系统。(就相当于借钱是一样的道理,有借有还,再借不难。)
PHP为25种以上的数据库产品提供了内置支持。
因为PHP开源软件(源代码可以供所有人共享,修改的软件)的出现,它和因特网就像面包和黄油一样密不可分。
PHP的优点之一是可以把PHP代码直接嵌入到HTML页面中。

Welcomeh3是html中标题的意思。
<?php <?php ?> 是PHP代码的开始和结束符。
echo “

Some dynamic output here

”;

是html中段落的意思。
?> echo打印输出的意思。

Some static output here



PHP还可以使用更短的界定(php语句跟html分离时候的标识。也就是你html显示你的,我php实现我的功能。)语法,也就是<? ?>,但是,要使用这个特性,需要启用PHP的short_open_tag指令。

PHP还支持另一种主流的界定形式,也就是类似于javascript这种显示风格的样子,
<script language=”php”> 先声明这个脚本使用的是php语言
print “This is another PHP example.”; print打印输出
</script>

Microsoft ASP以<%开头,以%>结束。PHP也同样支持这种显示的方式。
<%
print “This is another PHP example.”;
%>

但是从PHP6开始ASP风格的语法就被删去了。就像过气的明星被雪藏是一样的道理。
<html> html的开头标记
<head> 在<head></head>之内的,是head信息,head信息在浏览器浏览页面的时候是看不到的。
<title> html标题
<?php echo “Welcome to my Website”;?> </title>

</head>
<body> html文档主体
<?php
$date=”July 26,2007”; 声明一个变量$date
?>

Today’s date is<?=$date;?>

在<?= ?>中使用这个变量$date
</body>
</html>

当然,写PHP代码时,要为代码添加充分的注释。其实是为了方便以后的继续使用,继续修改。

PHP支持C++的单行注释语法,以双斜线(//)开头。
<?php
//Title: My first PHP script
//Author: Jason
echo “This is a PHP program”;
?>
PHP还支持另一种C++风格的单行语法,称为shell语法,它以#符号开头。
<?php
#Title: My PHP program
#Author: Jason
echo “This is a PHP program”;
?>

phpDocumentor是一个促进文档处理的开源项目。它将嵌在源代码中的注释转换为各种易读的格式。包括HTML和PDF。

PHP还支持一种多行形式的注释,同时标注注释的开始和结束。
<?php
/*
Title:My PHP Program
Author:Jason
Date: July 26,2007
*/
?>

楼主:langlangname  时间:2021-04-01 04:32:26
print()语句把传入它的数据输出到浏览器,就像人们通过打印机输出文字是一样的道理,其形式为:
int print(argument) int返回的类型是整数型,argument是传入的参数。
<?php
print(“

I love the summertime.

”);
?>
<?php
$season=”summertime”;
print “

I love the $season.

”;
?>
<?php
print “

I love the summertime.

”;
?>
以上这些语句都能够生成同样的输出如下,其实这三条语句本来就是差不多的,实现了一样的功能。
I love the summertime.

echo()能够输出多个字符串。
<?php
$heavyweight=”Lennox Lewis”;
$lightweight=”Floyd Mayweather”;
echo $heavyweight, “and”,$lightweight,”are great fighters.”;
?>
这个代码会生成以下输出:
Lennox Lewis and Floyd Mayweather are great fighters.
其实也就是通过echo语句将这几个变量中的字符串都合在一起打印输出了而已。

echo()和print()相比,echo()函数稍稍快一点,因为echo()函数什么都不返回,而print()不同,如果这个语句成功地输出,它会返回1。

printf()语句将静态数据和动态数据清晰地分至两个不同的部分,从而可以轻松地维护。
boolean printf(string format [,mixed args]) format是字符串类型的,args是混合类型的。
printf(“Bar inventory: %d bottles of tonic water.”,100);
执行这个命令会生成以下输出:
Bar inventory: 100 bottles of tonic water. (使用了printf函数后,%d其实被100给替换掉了。)

当然,printf()语句也可以同时传入两个值,就比如整数值和浮点数值,
printf(“%d bottles of tonic water cost $%f”, 100 , 43.20);
执行这个命令会生成以下输出:
100 bottles of tonic water cost $43.20 (%d被100给替换, %f被43.20替换)
处理小数值时,可以使用一个精度指示符调整精度,例如,
printf(“$%.2f”,43.2); // 显示为43.20
sprintf()函数的功能与printf()相同,但它将输出指派到字符串,而不是直接指派到浏览器,其形式如下,
string sprintf(string format[,mixed arguments])
$cost=sprintf(“$%.2f”,43.2); // $cost=$43.20 变量$cost最后指向到$43.20。
楼主:langlangname  时间:2021-04-01 04:32:26
PHP中常见的数据类型包括布尔型,整型,浮点型,字符串型和数组,还有对象。
标量(scalar)数据类型的变量能够保存单项信息,以下都属于标量数据类型,布尔型,整型,浮点型和字符串型。
布尔变量(两种可能,要么是真实的,要么就是虚假的。)表示真实性,只支持两个值,TRUE(真)或FALSE(假),不区分大小写。另一方面,也可以使用0来表示FALSE,非0值表示TRUE。
$alive=false; //$alive is false.
$alive=1; // $alive is true.
$alive=-1; // $alive is true.
$alive=5; // $alive is true.
$alive=0; // $alive is false.
PHP支持以十进制数(基数为10),八进制数(基数为8)和十六进制数(基数为16)表示的整数值。
42 //decimal十进制
-678900 //decimal十进制
0755 //octal 八进制
0XC4E //hexadecimal 十六进制

浮点数,也称为双精度数(double)或实数(real number),可以指定包含小数部分的数,浮点数用于表示货币值,重量,距离,以及用简单的整数无法满足要求的其他表示。

字符串是一个连续的字符序列。这样的组通常用单引号或双引号来界定。

下面是一些有效的字符串例子:
“PHP is a great language”
“whoop-de-do”
‘*9subway\n’ (之所以用单引号就是代表按照原来的样子进行输出)
“123$%^789”
当然,也可以将字符串当作数组来访问和显示某个字符。
$color=”maroon”;
$parser=$color[2]; // 将$color中的第三个字符r赋值给$parser

复合数据类型可以用于将多个相同类型的项聚集起来,表示为一个实体。这包括数组(array)和对象(object)。

Array正式的定义是有索引的数据值集合。每个数组索引(也成为键(key))引用一个对应的值。索引其实就是一个简单的数,指示某个值在系列中的位置,也可以与值有某种直接关联。

例如,如果要创建美国各州的列表,可以使用数字索引的数组,如下:
$state[0]=”Alabama”;
$state[1]=”Alaska”;
$state[2]=”Arizona”;
...
$state[49]=”Wyoming”;

如果项目要求将美国各州与其州府相关联,这个时候使用关联索引。
$state[“Alabama”]=”Montomery”;
$state[“Alaska”]=”Juneau”;
$state[“Arizona”]=”Phoenix”;
...
$state[“Wyoming”]=”Cheyenne”;

在PHP中,对象这种数据类型必须显式地进行声明。(就像性格直接的人与人之间的交流是一样的,性格直接的人喜欢直来直去地说话。)
Class Appliance { 声明一个Appliance类
private $_power; 声明一个私有成员$_power
function setPower($status) { 声明一个setPower函数,传入$status参数
$this->_power=$status; $this指针将私有成员$_power指向变量$status
}
}
$blender=new Appliance; //声明$blender为Appliance类的新的对象。
可以使用方法setPower()来设置blender对象的power属性。
$blender->setPower(“on”);
楼主:langlangname  时间:2021-04-01 04:32:26
PHP中的类型强制转换也就是将一个变量强制转换为与原来类型不同的另一种类型。(强扭的瓜不甜,但是在PHP的类型转换中,强扭的瓜还是甜的,可以这样来理解。)
例子,将一个整数转换为双精度数。
$score=(double)13; //这样一来$score就等于13.0
将一个双精度数强制转换为整数。
$score=(int)14.8 //$score=14
将一个字符串数据类型转换为一个整数。
$sentence=”This is a sentence”;
echo (int)$sentence; // 返回0
当将一个数据类型强制转换为数组中的一个成员时,所转换的值将成为数组中的第一个成员。(当品质极好的我强迫你跟我谈朋友的时候,你很快就会发现你是我的第一个女朋友。)
$score=1114;
$scoreboard=(array)$score;
echo $scoreboard[0]; //$scoreboard[0]输出的是数组scoreboard中的第一个成员,结果输出为1114
任何数据类型都可以转换为对象,结果是,该变量成为了对象的一个属性。该属性名为scalar:
$model=”Toyota”;
$obj=(object)$model;
然后可以如下引用这个值:
print $obj->scalar; //返回”Toyota”
当然,PHP有时候会将变量自动转换为最适合的类型。
<?php
$total=5; //一个整型
$count=”15”; //一个字符串
$total +=$count; //$total=20(这个时候$total就自动转换为整型了。$total+=$count相当于$total=$total+$count;

<?php
$total=”45 fire engines”;
$incoming=10;
$total=$incoming +$total;
?>
//$total最后就忽略了原来内容中的fire engines字符串,最后45加10等于55,$total最后的值就等于55了。(忽略了次要,最后收获了重要。)

<?php
$total=”1.0”;
If($total) echo “We’re in positive territory!”;
?>
在这个例子中,$total中的内容自动转换为布尔类型。

<?php
$val1=”1.2e3”; //1.2e3其实就是1200
$val2=2;
echo $val1*$val2; //输出2400
?>
楼主:langlangname  时间:2021-04-01 04:32:26
gettype()函数返回var所指定变量的类型。共有八个可能的返回值:array(数组型),boolean(布尔型),double(双精度型),integer(整型),object(对象型),resource(资源型),string(字符串型)和unknow type(未知类型)。函数的形式为:

string gettype(mixed var) gettype函数的返回值是字符串型,参数mixed var表示var变量可以是各种类型。

settype()函数将var指定的变量转换为type指定的类型。Type有7个可取值:array(数组型),boolean(布尔型),float(浮点型),integer(整型),null(空类型),object(对象型)和string(字符串型)。如果转换成功,则返回TRUE,如果失败,则返回FALSE。函数的形式为:

boolean settype(mixed var, string type) settype函数的返回值是boolean布尔型, 参数mixed var表示var变量可以是各种类型,string type是字符串型。

当然,也可以用很多函数来确定变量的类型,包括is_array()是否是数组,is_bool()是否是布尔型,is_float()是否是浮点型,is_integer()是否是整型,is_null()是否是空类型,is_numeric()是否是数字或数字字符串,is_object()是否是对象型,is_resource()是否是资源类型,is_scalar()是否是标量类型和is_string()是否是字符串类型。以上函数判断正确返回TRUE,判断错误返回FALSE。然后将它们合并为一个一般形式。
boolean is_name(mixed var)

举一个例子:
<?php
$item=43;
printf(“The variable \$item is of type array: %d <br/>”, is_array($item));//判断$item是否是数组型。其中的\是转义字符,\$item最后显示的时候是$item。

printf(“The variable \$item is of type integer:%d <br/>”, is_integer($item));
//判断$item是否是整型。

printf(“The variable \$item is numeric:%d <br/>”, is_numeric($item));
//判断$item是否是数值型。
?>

以上三行代码返回如下内容,其中0代表错误,1代表正确:
The variable $item is of type array:0
The variable $item is of type integer:1
The variable $item is numeric:1
楼主:langlangname  时间:2021-04-01 04:32:26
PHP中的标识符,可以由一个或多个字符组成,必须以字母或下划线开头。此外,标识符只能由字母,数字,下划线字符和从127到255的其他ASCII字符组成。标识符区分大小写,因此,变量$langlang不同于变量$Langlang。标识符可以是任意长度。同时,标识符不能与任何PHP预定义关键字(PHP中已经定义好的关键字,就比如const)相同。
比如This&that就是非法的标识符,因为this和that都是PHP中的预定义关键字。

变量是可以在不同时刻存储不同值的符号。变量总是以美元符$开头,然后是变量名。(我是不是可以理解为PHP其实很受那些财迷欢迎,都是美元嘛,这么多钱,哈哈。)变量名可以以字母或下划线开头,要由字母,下划线,数字或从127到255的其他ASCII字符组成。当然,变量也是区分大小写的。当然,所有的变量都应该在使用前进行声明,最好带有注释。(写代码的时候注释其实非常重要,方便以后的阅读和修改。)变量赋值有两种方法,值赋值和引用赋值。

值赋值
按值赋值就是将赋值表达式的值复制到变量。比如,
$color=”red”;
$number=12;
$age=12;
$sum=12+”15”; //$sum等于27
对于引用赋值而言,如果多个变量引用了同一个内容,修改其中任意一个变量,在其余的变量上都将有所反映。(你只要改变了我,你其实就已经相当于改变了跟我有关的很多人。)在等于号后面加一个&符号就可以完成引用赋值。

<?php
$value1=”Hello”;
$value2=& $value1; //$value1和$value2都等于”Hello”
$value2=”Goodbye”; //$value1和$value2都等于”Goodbye”
?>
PHP还支持另一种引用赋值语法,就是将&符号放在所引用变量的前面。
<?php
$value1=”Hello”;
$value2= &value1; //$value1和$value2都等于”Hello”
$value2=”Goodbye”; //$value1和$value2都等于”Goodbye”
?>其中注意了,$value2=& $value1;跟$value2= &value1;是不一样的。一个是等于号后面加上&,一个是变量前面加上了&。
楼主:langlangname  时间:2021-04-01 04:32:26
在PHP脚本的任何位置都可以声明变量。(你想什么时候使用我这个变量朋友都可以的哦。因为我的性格很好。)变量可以访问的范围称为作用域scope。
PHP变量有4种作用域:
局部变量
函数参数
全局变量
静态变量

在函数中声明的变量称为是局部变量。其实也就是它只能够在函数中引用。(离开了函数,它就活不下去了。就像鱼脱离了水就会死是一样的道理。)
$x=4; //这里的$x其实就是一个全局变量
function assignx(){ //声明了一个assignx函数
$x=0; //这里的$x就是一个局部变量了,离开了这个函数,它其实就活不下去了。
printf(“\$x inside function is %d <br/>”,$x);
}
assignx(); 使用这个函数assignx()。
printf(“\$x outside of function is %d <br/>”,$x);
代码的执行结果为:
$x在函数内部为0
$x在函数外部为4,其实这个例子中外面的那个$x其实就等同于是全局变量了。

function x10($value){
$value=$value*10;
return $value;
}
在声明参数的函数内部可以访问和处理这些函数参数,但当函数执行结束时,参数就会撤销。
与局部变量相反,全局变量可以在程序的任何地方访问。只要在变量前面加上关键字GLOBAL,这样就可以将其识别为全局变量。(你在哪里都可以召唤我这个全部变量朋友哦。)
$somevar=15; 这里$somevar是局部变量
function addit(){
GLOBAL $somevar; 将$somevar重新声明为全局变量
$somevar++; $somevar自己增加1
echo “Somevar is $somevar”; 然后打印出来
}
addit(); 调用addit这个函数
$somevar最后显示的值是16.但是如果省略下面这行代码:
GLOBAL $somevar; 变量$somevar将赋值为1.因为$somevar在addit()函数中被认为是一个局部变量。

当然,也可以使用$GLOBALS数组将变量$somevar声明为全局变量。
$somevar=15;
function addit(){
$GLOBALS[“somevar”]++; 将somevar通过$GLOBALS数组声明为是全局变量。
}
addit();
echo “Somevar is “.$GLOBALS[“somevar”];
somevar的返回值就是16了。

静态变量在函数退出时不会丢失值,并且再次调用此函数时还能够保留这个值。(只要你对我这个静态变量朋友好,我就会一直记得你的好。而且会一直保留下去。)在变量名前面加上关键字STATIC就可以声明一个静态变量。

function keep_track(){
STATIC $count=0;
$count++;
echo $count;
echo “<br/>”;
}
keep_track();
keep_track();
keep_track();
因为$count是静态的,它会在每次执行函数时都会保留前面的值。所以输出如下:
1
2
3
楼主:langlangname  时间:2021-04-01 04:32:26
foreach($_SERVER as $var=> $value){ //foreach是一个循环语句,foreach将$_SERVER PHP预定义变量中的所有值都遍历出来。(遍历,其实跟认真读书是一样的道理,要认真地每一页都阅读一遍。在这里是将$_SERVER中的每一个变量都访问一遍。)出来。$_SERVER超级全局变量包含由Web服务器创建的信息,它提供了服务器和客户配置及当前请求环境的有关信息。
echo “$var=> $value <br/>”;
}
显示用户的IP地址:
printf(“Your IP address:%s”,$_SERVER[‘REMOTE_ADDR’]);
这会返回一个数字型的IP地址,如192.0.34.166。
获得关于用户浏览器和操作系统的信息。
printf(“Your browser is:%s”,$_SERVER[‘HTTP_USER_AGENT’]);
要使用预定义变量数组,必须在php.int文件中启用配置参数track_vars。
$_SERVER[‘HTTP_REFERER’]。引导用户到达当前位置的页面的URL。
$_SERVER[‘REMOTE_ADDR’]。客户IP地址。
$_SERVER[‘REQUEST_URI’]。URL的路径部分。也就是如果URL是http://www.example.com/langlang/lang/index.html,那么URI就是langlang/lang/index.html。
$_SERVER[‘HTTP_USER_AGENT’],客户的用户代理,一般会提供操作系统和浏览器的有关信息。
楼主:langlangname  时间:2021-04-01 04:32:26
$_GET超级全局变量包含使用GET方法传递的参数的有关信息。如果请求URL http://www.example.com/index.html?cat=langlang&id=188,就可以使用$_GET超级全局变量访问如下变量:
$_GET[‘cat’]=”langlang”
$_GET[‘id’]=”188” 其实就是对应了URL地址中的cat=langlang和id=188。

$_POST超级全局变量包含用POST方法传递的参数的有关信息。

<form action=”subscribe.php” method=”post”> 将表单提交到subscribe.php页面,提交服务器的http方法是通过post表单的提交方式。post适用于大量数据的提交。

是HTML中的段落标签。
Email address:<br/> <br/>换行。
<input type=”text” name=”email” size=”20” maxlength=”50” value=””/>
text会产生一个文本框,文本框名称name是email,大小size为20,最大长度maxlength为50,value初始化值为空。



Password:<br/>
<input type=”password” name=”pswd” size=”20” maxlength=”15” value=””/>
password会产生一个密码文本框。密码文本框名称name为pswd,大小size为20,最大长度maxlength为15,初始化值value为空。



<input type=”submit” name=”subscribe” value=”subscribe!”/>
产生一个submit提交按钮,提交按钮名称为subscribe,提交按钮的显示值为subscribe!。


</form>
通过目标脚本subscribe.php,就可以使用下面的POST变量:
$_POST[‘email’]=”[email protected]”;
$_POST[‘pswd’]=”rainyday”;
$_POST[‘subscribe’]=”subscribe!”; 其中email,pswd,subscribe就是刚才那个脚本中name所指向的值。(你最开始在PHP脚本中给定了我最开始的name名称,所以,我很感谢你,你能够在$_POST中用到我。)
楼主:langlangname  时间:2021-04-01 04:32:26
刚才新更新的教程里其实有p这个段落标签,在天涯论坛里直接就显示出来了,大家所以感觉看上去非常奇怪吧。
楼主:langlangname  时间:2021-04-01 04:32:26
$COOKIE(COOKIE就是为了让网站辨别出你的身份,以加密的方式,暂时或永久地存储在你本地电脑上的那些文件。通过这些文本文件中的文件名,就可以看到哪个Web站点喜欢上了你,然后在你的电脑上放置了COOKIE这种小甜饼供你这位超级大用户来享用。)超级全局变量存储了通过HTTP cookie传递到脚本的信息。当使用setcookie()存储了一个名为langlang.com,值为langlang的cookie。以后可以通过调用$_COOKIE[“langlang.com”]来获得这个值。

$FILES超级全局变量包含通过POST方法向服务器上传的数据的有关信息。
$FILES[‘upload-name’][‘name’]。从客户端向服务器上传文件的文件名。
$FILES[‘upload-name’][‘type’]。上传文件的MIME类型(MIME多用途互联网邮件扩展类型,也就是设定电脑里的某一个扩展名的文件,当访问的时候,浏览器会自动使用指定的应用程序来打开。指定的MIME类型,可以是applilcation应用,audio声音,image图片,text文本,video视频等等。总之MIME类型就像一个多面手一样,在默默地帮助你通过浏览器打开你电脑中的每一个文件。)。这个变量是否赋值取决于浏览器的功能。

$FILES[‘upload-name’][‘size’]。上传文件的大小(以字节为单位)。
$FILES[‘upload-name’][‘tmp_name’],上传之后,将此文件移到最终位置之前赋予的临时名。
$FILES[‘upload-name’][‘error’]。上传状态码,尽管这个变量名为error,但实际上在成功的情况下也会填写这个变量。它有5个可能的值。

UPLOAD_ERR_OK。文件成功上传。
UPLOAD_ERR_INI_SIZE. 文件大小超出了upload_max_filesize指令所指定的最大值。
UPLOAD_ERR_FORM_SIZE.文件大小超出了MAX_FILE_SIZE隐藏表单域参数(可选)指定的最大值。
UPLOAD_ERR_PARTIAL.文件只上传了一部分。
UPLOAD_ERR_NO_FILE.上传表单中没有指定文件。

$ENV超级全局变量提供PHP解析器所在服务器环境的有关信息。
$_ENV[‘HOSTNAME’]。服务器主机名。
$_ENV[‘SHELL’]。系统shell。
$_SESSION超级全局变量包含与所有会话变量有关的信息。
楼主:langlangname  时间:2021-04-01 04:32:26
大家其实应该知道,PHP声明变量时,前面都加上$符号,其实,可以在例如$langlang前面再加一个$符号,这样就成为了PHP中变量的变量。
$langlang=”abc”;
$$langlang=”&langlang”;
其作用是把&langlang赋值给名为abc的变量。
因此,下面两行代码将得到相同的结果:
echo $langlang $abc;
echo $langlang ${$langlang};
两个结果都是输出字符串abc &langlang。
楼主:langlangname  时间:2021-04-01 04:32:26
PHP中的常量是指在程序执行中无法修改的值。(你完全无法改变我,就是因为我足够坚定。因为,我就是你并不真正熟悉的那个常量。)常量使用define()函数定义。
boolean define(string name,mixed value[,bool case_insensitive]) 参数name常量名的返回值是字符串类型,常量值或者表达式value的返回值是混合类型(常量只能够包含标量数据,也就是boolean,integer,float和string),case_insensitive这个可选参数值如果为TRUE,那么后面对此常量的引用将不区分大小写。

define(“PI”, 3.141592);
下面的代码使用了这个常量:
printf(“The value of pi is %f”,PI); 这里的%f表示浮点数。
$pi2=2*PI;
printf(“Pi doubled equals %f”,$pi2);
此代码生成如下结果:
The value of pi is 3.141592.
Pi doubled equals 6.283184.
常量是全局的,可以在脚本的任何位置引用。(你在任何位置都可以召唤我这个常量朋友。)
表达式是一个短语,它表示程序中的某个特定动作。所有表达式至少由一个操作数和一个或多个操作符组成。
$a=5; //将整型值5赋值给变量$a
$a=”5” //将字符串5赋值给变量$a
$sum=50+$some_int; //将50和$some_int的和赋值给$som
$wine=”langlang”; //将“langlang”赋值给变量$wine
$inventory++; //将变量$inventory自增1
操作数是表达式的输入。
$a++;// $a就是操作数。
$sum=$val1+$val2;//$sum,$val1和$val2都是操作数。
楼主:langlangname  时间:2021-04-01 04:32:26
操作符是表达式中指定某个动作的符号。(在运动中的某一个瞬间,这个瞬间可以用操作符来记录下来。)
操作符优先级是操作符的一个特性。
$total_cost=$cost+$cost*0.06;这里先计算$cost*0.06,再加上$cost.
可以等价地写为:
$total_cost=$cost+($cost*0.06);
$value=3*4*5*7*2;
这个例子与下例相同:
$value=((((3*4)*5)*7)*2);
乘法(*)操作符的结合性是从左至右的。
$c=5;
print $value=$a=$b=$c;
上面的示例与下例相同:
$c=5;
$value=($a=($b=$c));
计算这个表达式时,变量$value,$a,$b,$c都将包含值5,因为赋值操作符(=)的结合性是从右至左的。

算数操作符中的$a%$b就是$a除以$b的余数。

$a=”abc”.”def”; $a通过拼接赋值为”abcdef”。
$a.=”ghijkl”; $a等于它的当前值与”ghijkl”的拼接结果。
//$a包含字符串值“Spaghetti &Meatballs”;
$a=”Spaghetti” . ”&Meatballs”;
$a.=”are delicious.”;
//这个时候的变量a通过拼接赋值操作符.=的拼接之后,值变为”Spaghtti &Meatballs
are delicious.”(什么时候都可以使用拼接操作符,拼接可以创造出很多不一样,有个性的东西。)
楼主:langlangname  时间:2021-04-01 04:32:26

自增(++)和自减操作符(--)可以将当前变量的值增1或者减1。(你可以减去我一个朋友,你也可以帮助我增加一个朋友哦。因为,我看似朋友很少,但其实,还可以。)
$inv=15; //将整型值15赋值给$inv
$oldInv=$inv--; //先将$oldInv中的值赋值给$inv,然后将$inv自减。
$origInv=++$inv; //先将$inv自增,然后将$inv中的新值赋值给$origInv.
将操作数放在操作符前面称为前自增和前自减运算。而放在后面称为后自增和后自减运算。(自增和自减操作符使用的顺序对变量的值有重大影响。操作符放的顺序不同,就像排在队伍的不同位置是一样的道理,对于数值的改变有重大影响。)

逻辑操作符常用于控制结构中,如if条件和while及for循环。
$a&&$b 与 如果$a,$b都为true,则输出true
$a AND $b 与 如果$a,$b都为true,则输出true
$a || $b 或 如果$a或$b为true,则输出true
$a OR $b 或 如果$a或$b为true,则输出true
!$a 非 如果$a不为true,则输出true
NOT $a 非 如果$a不为true,则输出true
$a XOR $b 异或 如果只有$a或$b为true,则输出true

file_exist(“filename.txt”) OR echo “File does not exist!”;
会有两种输出:
通过file_exist函数判断文件filename.txt是否存在。
如果判断出文件不存在,则输出句子”File does not exist!”;

相等操作符,用来比较两个值。测试其相等性。
$a==$b 是否相等 如果$a和$b相等,则输出true
$a != $b 是否不相等 如果$a和$b不相等,则输出true
$a ===$b 是否相同(恒等符号,判断变量内容和类型是否相等。) 如果$a和$b相等,并且类型也相同,则输出true

比较操作符与逻辑操作符相似,通过比较两个或多个变量值的结果,提供了一种控制程序流程的方法。

$a<$b 小于 如果$a小于$b,则输出true
$a>$b 大于 如果$a大于$b,则输出true
$a<=$b 小于或等于 如果$a小于或等于$b,则输出true
$a>=$b 大于或等于 如果$a大于或等于$b,则输出true
($a==12)?5:-1 三元运算 如果$a等于12,返回值为5,否则返回值为-1
当前,比较操作符只能够用来比较数值。(通过以上的这些操作符,再结合之前的代码和教程,其实就已经能够写出还算是可以的小程序了。PHP好像看似很难,但,其实PHP跟写作好像有着非常大的关联或者是联系,如果感兴趣的话,一直坚持下去,也一直跟我共同学习下去吧。)
楼主:langlangname  时间:2021-04-01 04:32:26
不知不觉《郎朗的计算机文学》前言加正文一万突破了,其实对于我,对于阅读的大家而言都会有所收获,其实,编程语言并不难,难就难在是否能够继续坚持学习下去。看似枯燥,其实,很有意义。大家说是吧。
楼主:langlangname  时间:2021-04-01 04:32:26
以下是一些PHP中位操作符的例子。
$a & $b 与 $a和$b包含的每一位相与
$a | $b 或 $a和$b包含的每一位相或
$a ^$b 异或 $a或$b包含的每一位相异或
~$b 非 $a中的每一位取反
$a<<$b 左移 $a将接收到$b左移两位的值
$a>>$b 右移 $a将接收到$b右移两位的值

用双引号括起的字符串在PHP脚本中最为常见,因为它们提供了最大的灵活性,其原因是变量和转义序列都会得到相应的解析。(你用双引号强调了我,我就成为了你最为亲睐的字符串挚友。)

<?php
$sport=”boxing”; 变量$sport定义为boxing字符串。
echo “Jason’s favorite sport is $sport.”; 然后通过echo语句输出这一段话。变量$sport中的内容也在获得了之后输出。
?>
这个例子会返回:
Jason’s favorite sport is boxing.
<?php
$output=”This is one line.\n And this is another line.”;变量$output中的字符串内容会输出,换行符\n都会解析为换行符号。
echo output;
?>
它将在浏览器源代码中返回如下内容:
This is one line.
And this is another line.

PHP中可识别的转义序列
\n 换行符
\r 回车
\t 水平制表符
\\ 反斜杠
\$ 美元符
\” 双引号
\[0-7][1,3] 八进制记法
\x[0-9A-Fa-f][1,2] 十六进制记法

用单引号的时候,字符串就按照声明的形式原样解释。这表示,解析字符串时,变量和转义序列都不会进行解析。(你用单引号来定义我这个朋友的时候,我就变成了一个非常直接的朋友,不需要拐弯抹角。)

例如
print ‘This string will $print exactly as it \’s \n declared.’;
这会生成
This string will $print exactly as it’s \n declared.(你会很惊喜地发现print语句中单引号中的内容除了\’转义为了’,其他都没有进行解析,而是原样显示。)

print ‘This is another string.\\’;
这会生成:
This is another string.\ print语句中的\\被解析成了\
楼主:langlangname  时间:2021-04-01 04:32:26
heredoc语法为输出大量文本提供了一种便利的方式。
<?php
$website=”http://www.romatermini.it”;
echo <<<EXCERPT

Langlang is a very good and old boy.


EXCERPT;
?>
这个语句中,开始和结束标识符必须相同。这个例子中的开始和结束标识符为EXCERPT。
当然你也可以用LANGLANG作为你喜欢的开始和结束操作符也可以。当然,限制也是有的,该标识符必须完全由字母数字字符和下划线组成,而且不能以数字或者下划线开头。就比如1ABC和_ABC不能够作为开始和结束标识符。
开始标识符前面必须有三个左尖括号:<<<
结束标识符必须在一行开始处,而且前面不能有空格或任何其他多余的字符。

楼主:langlangname

字数:178413

帖子分类:舞文弄墨

发表时间:2020-09-28 20:04:02

更新时间:2021-04-01 04:32:26

评论数:226条评论

帖子来源:天涯  访问原帖

下载地址:TXT下载

 

推荐帖子

热门帖子

随机帖子