若天明 发表于 2015-2-16 00:25:46

PHP网站制作之《PHP法式设计》 第三章 PHP中的数据处...

最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。   


   第三章 PHP中的数据处置
   
本章侧重讲述PHP法式的外部数据,包含数字,变量和常量。法式中的数据由操作符来掌握的,操作符告知PHP对外部数据停止甚么操作(如加、减等等)。PHP法式的内部数据包含文本文件和数据库,对内部数据的具体引见请参考第六章“数据库和SQL”
   
当法式运转时数值不会改动,这是由于这些数值在源代码中已正确暗示了它们该是甚么值。而大多半时分,在法式运转时却需求改动某些数值,为此,必需留出一局部盘算机的存储空间来保留可变更的数值。并且必需随时寄望这些小存储单位的地位,以便法式能在需求时能找到它们。像一切盘算机言语一样,PHP利用变量来监督盘算机存储器的利用情形,每当需求存储一条新的动静时,就能够将它置成一个变量。常量指的是付与一个称号的数值,最典范的一个常量例子就是数学值:π(pi)。
本章讲述了在PHP中若何利用数值、变量和常量。起首,咱们先来会商数值。
3.1 数值
数值常暗示为“等于”或实践代码的模式,好比,在源代码法式中看到像12.5如许的数值时,它指的是十二点五,而不是指“1”,“2”,“.”,“5”这四个字符。可以用一样体例来暗示文本,好比,“Rolf D"Barno”(注重双引号)暗示由十二个字符构成的字符串。由于这十二个字符用双引号括了起来,因而,它们只能是一个字符串数值。
PHP利用两品种型的数值:
.数字 -- 最根基的数据类型。
.文本 -- 作为一个单位停止处置的一串字符。
   
3.1.1 数字
在PHP中最常利用的是数字,它凡是代表为了完成某项义务而需求履行的法式所要用到的一个数值。咱们最常利用的是十进制数,但在PHP中也能够利用八进制和十六进制。
在碰到很大的或很小的数字的时分,就会发明迷信表达式是非常有效的了。在高中时我所学的数学常识差不多都快忘光了,只要对迷信表达式切记不忘,这也许是由于我对照喜好挪动小数点的原因。迷信表达式10.23E+4,等于102,300。也能够在迷信表达式顶用减号暗示对照小的数,好比,10.23E-4等于.001023。复杂地说,假如指数为负数的话,就将小数点向右挪动,假如指数为正数,则将小数点向左挪动。
   
注重:关于那些对非十进制不熟习的人来讲,这里有一个复杂的注释。
十进制的基数为十。当看到值15时,它暗示(1*10)+5或1510。下方的值代表基数。
八进制的基数为八。当看到值15时,它暗示(1*8)+5或1310。
十六进制的基数为十六。当看到值15时,它暗示(1*16)+5或2110。当基数为十六时,除0到9外,还需求6个字符,以便能占满十六个值的每个地位。字母A-F经常使用来暗示11-16。因而,值BD16等于(B16*16)+D16或(1110*16)+1310,即17610。
   
让咱们来看一看在法式中会用到的几种分歧类型的数字。起首先来看整数。
* 123--十进制整数。
* 043--八进制整数,数字前缀0暗示八进制数。
* 0x23--十六进制整数,数字前缀“0x”暗示十六进制数。
有小数局部的数叫做浮点数。简单地讲,常常见到的那些数值指的都是浮点数。
* 100.5--有一名小数的一个浮点数,也能够称为一百又非常之五。
* 54.534--有三位小数的一个浮点数,也能够称为五十四又一千分之五百三十四。
* .000034--十分小的一个浮点数,也能够用迷信表达式3.4E-5暗示。
   
整数没有小数局部,浮点数有小数局部。
   
3.1.2 文本
文本是一组由引号括起来的字符,因此能被当为单个数据来利用。实践上,PHP对引号的请求其实不严厉,没有效引号括起来的单个词也能够用来暗示字符串,然而为了不搅浑,请不要如许做。因为文本值包括有一系列字符,所以文本值凡是称为字符串。它们在法式中经常使用于暗示肯定文件名、显示动静、输出提醒等。PHP严厉辨别单引号(')、双引号(")和反引号(`)的感化。
   
文本也常称为字符串。
   
单引号字符串:
单引号字符串相当轻易了解,只需求用单引号把想利用的文本括起来便可。例如:
   
'Men at Arms by Terry Pratchett'
'<p>This is an HTML paragraph.</p>'
   
单引号字符串是用单括号(')括起来的文本。
   
注重:读过本章前面的内容“变量交换”以后,单引号的真正感化才干体现出来。
   
假如需求在单引号外部再次利用单引号,工作就会变得有些费事。例如,上面的语句不克不及正常任务,这是因为第二个引号已停止了所暗示字符串。
   
'Terry's book is highly enjoyable.'
   
这个典范的毛病便是语法(或剖析)毛病,PHP编译器不晓得若何处置第二个单引号今后的文本。以下是准确的暗示体例:
   
'Terry\'s book is highly enjoyable.'
   
反斜杠(\)字符串暗示单引号的功效--停止文本值--将会被疏忽。
   
提醒:反斜杠字符也被称为本义字符,这或许是因为它使它前面的字符从经常使用寄义中离开出来的原因。
   
有关单引号字符串的另外一个更主要的要点是--假如需求在单引号字符串中换行,只需复杂地在源代码中键入换行键便可。清单3.1显示了若何如许做。
   
清单3.1 line_breaks.php3--在输出行中到场换行便可入手下手新行
<?php
echo '<pre>First Paragraph:
   
Corporal Carrot, Ankh-Morpork City Guard
(Night Watch), sat down in his nightshirt
took up his pencil, sucked the end for a
moment, and then wrote:</pre>';
?>
   
假如读者不熟习HTML言语的话,请浏览一到两本HTML教授教养指南。在本书今后的章节中必需熟习HTML言语。
   
   
Page 35, 图 3。1
   
图 3.1 可以经由过程 Web阅读器看到在代码中到场的换行
   
在图3.1中可以看到用单引号括起来的,乃至在代码中包括换行的字符串的一局部。
   
双引号字符串:
双引号字符串相似于单引号字符串,然而双引号字符串更庞杂一点。在双引号字符串中可使用反斜杠在字符串中到场本义序列和转换字符。也能够利用变量交换,然而如今还不盘算过早触及有关变量交换方面的成绩,这个主题留到今后再细心会商。
   
双引号字符串是由双引号(")括起来的字符串。
   
根基的双引号字符串是一系列由双引号(")括起来的字符,假如需求在字符串中利用双引号,可使用反斜杠字符。例如:
   
"Men at Arms by Terry Pratchett"
"<p>This is an HTML paragraph.</p>"
"Terry's book is highly enjoyable. "
"John said,\"Gifts are great.\""
   
注重在最初一行中的反斜杠用来使双引号的功效改动,假如不利用反斜杠字符,也能够利用单引号。双引号字符串和单引号字符串的一个较大的分歧的地方是,双引号字符串可以在字符串中到场特别的本义序列。表3.1显示了PHP可以了解的本义序列。
   
表3.1 本义序列
本义序列 描写
\n 换行
\r 回车
\t 制表符
\$ 美圆符号
\0nnn 任一个八进制数
\xnn 任一个十六进制数
\\ 反斜杠字符
   
提醒:鄙人一节“变量”中,就能够晓得在利用$字符时,为何需求利用反斜杠。
   
你或许对\0nnn和\xnn对照生疏,请看上面的例子:
   
"Peter was \067 years old yesterday."
"Peter was \0x39 years old yesterday. "
   
以上的文本都暗示彼得 9岁了,八进制和十六进制序列都暗示彼得的岁数9这个字符的ASCII代码。ASCII代码的清单详见附录B。
   
反引号字符串:
关于反引号字符串是不是是真实的文本还存在争辩,这是由于PHP利用反引号字符串来运转体系号令。当PHP看到反引号字符串时,它将字符串数值传递给Windows、UNIX或用户利用的其他类型操作体系。清单3.2显示了这个进程是若何完成的,图3.2显示在Web阅读器窗口中的体系号令输入了局。
反引号字符串利用反引号(`)括起来。
   
清单3.2 back_quoted_string.php3--利用反引号字符串履行号令
<?php
echo '<pre>';
echo `ls *.php3`;
echo '</pre>';
?>
   
   
Page 37 图3.2
   
图3.2在Web阅读器中显示的体系号令所显示的文本
   
在双引号字符串利用的本义序列也能在反引号字符串中利用。
   
3.2 变量
数字仅能处理用来法式傍边的外部数据的一局部成绩。当需求保留数据值,并在运转法式时需求停止改动的时分,就需求用到变量。PHP有三品种型的变量:
标量 -- 一次保留一个特定命字或字符串。我凡是用scl_作为标量名的肇端字符。假如该变量只保留一品种型的值时,我将在其名字前利用int_或str_前缀。
数组 -- 存储数值的列表。这些数值多是数字、字符串或是另外一个数组。我凡是用arr_作为数组变量的肇端字符。
对象 -- 存储变量信息和函数。更具体的信息请参看第十章“面向对象”。我凡是用obj_作为对象变量的肇端字符。
   
提醒:保举对分歧类型的数据利用可辨别的变量名,除非有更好的来由。假如需求利用统一个名字的时分,可以测验考试利用名字的单数作为数组变量名。例如,利用 $name作为标量名,并利用$names作为数组变量名。这将在今后的编程中防止一些凌乱。
   
注重:在PHP中的变量名是辨别巨细写的。这意味着$scl_varname、$scl_Valname、$scl_varName和$scl_VARNAME都代表分歧的变量。
   
在本章上面的局部将分离会商每种变量类型。你将读到若何定名变量、设置它的值、和它们的一些用途。
3.2.1 标量
标量经常使用来跟踪单个信息。例如,客户的名字或出售的数目。只需标量名以$为第一个字符,第二个字符是字母或下划线,就能够利用任一个可以从名字想象出是甚么器材的名字作为标量名。
   
提醒:假如已经利用Visual Basic停止过编程,那末在定名变量时必需出格当心。要记居处有的标量名都是以$为入手下手的,而不只是字符串;名字的入手下手字符是$,而不是名字的开头字符是$。
   
让咱们如今看看一些变量的名字:
* $int_page_number--存储以后页码。
* $str_magazine_title--存储杂志的题目。
* $0--有效的变量名字。变量名不克不及以数字字符入手下手。
   
我较喜好利用具有描写才能的变量名。对我来讲,$int_book_number比$booknum更好,这是因为$int_book_number的描写性更好。因为较长的文件名有助于了解法式,因而在法式不利用对照短的变量名较好。PHP变量名的长度实践上没有甚么限制,然而我普通把长度限制到二十个字符之内。比二十个字符还长的名字,有能够增添发生拼写掉误的时机。
   
利用具有描写性的名字:int_book_number比booknum更好。
   
分明了甚么是标量名以后,如今让咱们看看若何给变量赋值。对一个标量赋值凡是利用等号,如以下清单3.3所示。
   
清单3.3 assign_scalars.php3--利用赋值操作符
<?PHP
$int_page_number=46;
   
$str_magazine_title = 'PHP is good!';
?>
   
以上代码给变量赋值。当给变量赋给复杂的文本值时,因为利用单符号字符串效力更高,所以凡是利用单符号字符串。
   
注重:PHP利用双斜杠(//)来作为正文的入手下手,在双斜杠字符前面的任何字符城市被疏忽。
   
对变量赋值今后,可以依据需求改动它们的值。下一个例子,清单3.4,先对一个变量赋值,然后利用第二次赋值来改动变量的值。第二次赋值使原本的数值加一。
   
清单3.4 change_scalars.php3--改动变量的值
<?PHP
$int_page_number = 46;
   
$int_page_number =$int_page_number +1;
?>
   
注重:在PHP编程中,永久不用声明、界说或分派复杂的数据类型(标量或数组),第一次利用变量名就相当于界说它。
   
3.2.2 数组变量
一个数组就是把一系列数字和字符串作为一个单位来处置。数组中的每片信息都被以为是数组的一个元素。例如,可以用数组存储一个文件中的一切行或存储一个地址列表。
只需不必数字作为数组变量名的第一个字符,并且在创立数组名时只利用数字、字母和下划线的时分,就不用费心数组变量的定名划定规矩。
数组元素有三种办法设置初始值,可以对每个元素分离赋值:
   
$arr_zoo['pelican'] = 'Bird with a big beak, ';
$arr_zoo['cheetah'] = 'Fast cat. ';
$arr_zoo['horse'] = 'Four-legged animal. ';
   
也能够用上面的办法同时对多个元素赋值:
   
$arr_zoo = arry(
'pelican' => 'Bird with a big beak. '
, 'cheetah'=> 'Fast cat. '
, 'horse' => 'Four-legged animal. '
);
   
最初,最快的办法是复杂在数组的下一个空余地位上增添一个元素,第一个地位是0,第二个地位是1,顺次类推。例如,上面的代码给$arr_names数组增添了三个元素,这三个元素的下标分离为1、2和3(假定这个数组没有其它元素存在)。
   
$arr_names[] = 'Mitch';
$arr_names[] = 'Gerry';
$arr_names[] = 'Tim';
   
在晓得了若何给数组元素赋值以后,下一步让咱们会商一下若何若何获得这些值。
为了失掉数组名为arr_zoo,且数组下标为'pelican'的值时,可使用以下办法:
   
$key = 'pelican'
$value = $arr_zoo[$key]
   
这两行代码运转今后,$value的值变成'bird with a big beak'。文本字符串也能够用来指定要哪个数组元素的值。例如:
   
$value = $arr_zoo;
   
用于数组下标的字符值不该该用单引号括起来(Perl称它们为裸词)。因为可使用裸词,数组下标中不该该有空格。
   
注重:当读取一个并没有赋值的数组元素时,PHP前往空或零字符串。
   
PHP数组的数组下标和数组值是成对呈现的,因为没有一个很便利的办法显示数组中的一切值,这个现实偶然会引发一些费事。在测试和调试法式阶段中,这类功效性的缺少能够会妨害法式的开辟。固然本书中还没有说起这些函数,清单3.5供应了一个如许的函数。如今只需把dump_array函数当做黑箱子便可,等读完本书后,就会分明此函数的寄义。把这个例子当做模板,法式中的正文申明了若何利用这个函数。图3.3显示了利用dump_array函数的了局。
   
清单3.5 dump_array.php3--改动变量的值
   
Page 42, 清单 3.5
   
   
注重:dump_array函数没有按特别的按次显示数组下标和数组值对。第四章会商了可以对数组停止排序的函数。
   
   
Page 43,图3.3,
   
图3.3 dump_array函数显示任一个数组的数组下标和值
   
以上咱们只采取了字符串作为数组下标,让咱们思惟更活泼一点,思索一下上面所创立的数组初始值的数组下标是甚么?
   
$arr_mixed = array(
1
,434
, 'Jake' => '23 First Lane'
, 'Rebecca'
);
   
arry_mixed数组的数组下标分离是0、1、Jake和2。假如数组下标没有给定,PHP就主动供应一个。默许的数组下标是以0入手下手的,今后当数组下标没有赋值时默许值每次加一。
可以用标质变量交换一切的数值下标(数字和字符串),并仍能获得它们原本的值。可以如许写:
   
$key = 1;
echo $arr_mixed[$key];
   
以上两即将显示434,让咱们用这个例子显示PHP是若何依照需求,而把数字数据类型转换成字符数据类型的。在以下的代码行中,数组下标被初始化成字符串:
   
$key = '1';
echo $arr_mixed[$key];
   
这两行代码也显示434,标明了PHP可以主动地把字符串转换成数值。
有时,能够需求在数组初始化过程当中利用变量。例如:
   
$int_page_number = 434;
$str_first_name = 'Jake';
   
$arr_mixed = array(
1
,$int_page_number
,$str_first_name => '23 First Lane'
,'Rebecca'
);
   
3.2.3 多维数组
关于大多半法式来讲,唯一一个复杂的数值列表是很不敷的。例如,假设既要存书的总页数,又要存储出书商的名字。这需求利用两个列表:lst_number_of_pages和lst_publisher_names,在需求增添或修正信息的时分,就很不便利了。而且包管两个列表的同步也留下了隐患。
多维数组供应了一个极天真的数据布局,每个数组元素都可以包括别的一个数组。遗憾的是,多维数组(multidimensional)名字其实太长--我更喜好称它为散列表,它表现了在存贮器中数据布局是若何组织的。
   
注重:我不盘算具体讲述散列表的数据布局是如何无效的利用存储空间,和它为何能疾速找到域值。不外,假如你有乐趣的话,我建议浏览一本数据布局方面的书,以便进一步进修。
   
散列表可以按以下格局停止初始化:
   
$arr_books = array(
'0-679-76781-9' => array(
'name' => 'The Demolished Man'
,'pages' => 243
,'publisher' => 'Vintage Books'
)
, '0-312-85395-5' => array(
'name' => 'Children of the Mind'
, 'pages' => 349
, 'publisher' => 'Tor Books'
)
);
   
在上例中利用了每本书的ISBN号作为检索数组$arr_books的散列表下标,且每本书都有它本人的子散列表,用以描写其本人的特定信息。为了查询子散列表中的信息,正常的数组下标被扩大为采取两个下标,例如:要查《The Demolished Man》一书的页数有几何,可以用以下的表达式
   
$arr_books
   
你会发明散列表非常天真便利。绝不夸大地说,在我写的每个法式中城市使到散列表。之所以如许,个中一个很主要的缘由就是散列表利用起来是如斯的天真,以致于随时都可以到场需求的元素。假设在法式运转过程当中,你感觉应当将作者名也存出来的话,那末没有成绩,只需复杂的在散列表中到场以下信息:
   
$arr_books = 'Orson Scott Card'。
   
注重散列表数据布局答应在一个子散列表中到场一项内容,而不会影响其它数据。当入手下手利用PHP从多个数据库表中搜集信息时,散列表能用来组合这些信息。例如,当利用一个触及到多个产物供给商的产物数据库时,可以从第一个产物供给商入手下手将相干信息存入散列表中。然后,再读取第二个产物供给商的信息,并将这些新信息写入统一个散列表中。将一切产物供给商信息读取、并全体写入散列表今后,这一个散列表就包括了一切的货存信息。
在后面给出的3.5列表中的函数dump_array,说明了散列表的组织布局。图3.4显示了利用dump_array函数注释的散列表$arr_books的组织布局。
   
   
Page 46, 图3.4
   
图3.4 利用dump_arry函数显示的散列表
   
3.2.4 变量交换
双引号字符串还有一个特征,因为触及到变量,咱们之前还没有会商。既然如今咱们已对PHP变量是若何任务的已很熟习了,让咱们再进一步会商一下双引号字符串。
变量交换 意味着PHP可以用在双引号字符串中变量的值交换其名字,把这个概念延长到凡是寄义便是变量代表了它们的值。例如,假如$int_count为14,那末$int_count + 14就真恰是14 + 14。PHP,和大多半盘算机言语,这类交换是在字符串内完成的。例如:
   
$str_size = 'big';
echo "Jack was a $str_size man. ";
   
将显示
   
Jack was a big man.
   
然而,假如需求在变量前面当即跟从非空格或非标点符号外的其它字符时,就会呈现成绩。以下代码段显示了这是若何产生的:
   
$str_size = 'big';
echo "Jack was a $str_sizeger man. ";
   
PHP不会寻觅前面跟有字符串('ger')的变量($str_size),而是寻觅变量名为$str_sizeger的变量。把变量名用大括号括起来可以处理这个成绩:
   
$str_size = 'big';
echo "Jack was a ${str_size}ger man. ";
   
在利用过变量交换屡次以后,字符串和变量的组合就变的很天然。清单3.6显示了一些变量交换的例子。
   
清单3.6 interpolation.php3--变量交换的例子
   
Page 47 第7行= Page 48 第13行 清单 3.6
   
   
图3.5显示了散列表$arr_books有三级构成,第三级包括有书本的称号。正常情形下可以用相似上面的体例会见散列表的定名元素:
   
echo "The name is
$arry_books.";
// The previous line of code produces a PHP parse error.
   
   
Page 48 图3.5
   
图3.5 利用标量和数组变量停止变量交换
   
但是不幸的是,当利用变量交换时,PHP3不答应同时利用多于一个的数组下标。PHP的平安存取书本名的办法以下:
   
$second_level = $arr_books;
$third_levwl = $second_level;
echo "The name is $third_level.";
   
3.2.5 静态变量名
PHP答应用户静态的创立变量名。当法式运转时,利用特别的符号可以创立新的变量名:
   
// store the name of the dynamic variable.
$scl_dynamic = 'str_name';
   
// assign a value to the dynamic variable.
$$scl_dynamic = 'John';
   
echo "\$str_name = $str_name\n";
   
此法式将显示
   
$str_name =John
   
虽然静态变量名存在一些吸引利用的方面,然而我在二十年的编程履历中,从没有发明有利用它们的需求。数组的天真性应当足以处理大多半有能够需求利用静态变量名的成绩。
   
3.3 常量
常量可以匡助你以一种复杂的办法使法式增添可读性。利用BUFFER_SIZE比直接利用1024使法式更轻易让人了解。另外,因为大多半常量都在法式文件的开首局部界说,对它们停止更改也十分轻易。
可以同时界说数字常量和字符串常量。在以下的例子显示了若何如许做:
   
<?php
define('PI', 3.1415);
define('HOST', '192.168.0.2');
?>
   
除不需求在常量名前加$符号外,存取常量值和存取变量值十分相似。在下面界说的两个常量可以用以下的体例存取:
   
echo 'PI = ' . PI;
echo 'HOST = ' . HOST;
   
由于不利用初始的$符号,所以变量交换其实不合适常量。
   
3.4 操作符
操作符批示盘算机应当停止甚么操作。咱们可以如许了解操作符,就比如你在向汽车司机宣布“左转”或“右转”的号令。这些号令可以以为是偏向操作符,与停止加或减操作的数学操作符有一样的操作体例。但是在另外一方面,在汽车行驶时对司机大呼“泊车!”的话,这将赶过于其他号令之上。也就是说,“泊车”号令级别高于“左转”和“右转”。
如今,对大局部PHP操作符你应当都已对照熟习了。在进修操作符时,请信任直觉,已晓得的一些界说或许依然是对的。
一切操作符都是批示操作数的。所谓操作数就是可以在其长进行操作的对象。实践上,操作数指的就是数值、变量或表达式。在本章后面已进修了甚么是数值和变量,表达式指的是由操作符和操作数构成的,停止运算的一个单位。
操作数自己就具有递归的属性。在PHP中,表达式4/2,由两个操作数和一个除号构成,可以以为是一个值为2的操作数。再举一个例子:表达式(5+9)-7,由两个操作数和减号构成,第一个操作数是(5+9),第二个操作数为7。
3.4.1 操作符的优先级
在每种盘算机言语中,操作符的优先级成绩都是很主要的,PHP也不破例。所谓优先级指的是哪个操作符应当起首盘算。PHP依据相干性决意哪些操作符应放在一同。例如,减号操作符有右到左的相干性,这是由于它当即影响它右侧的操作数。你或许没有熟悉到这一点,乃至用于存取数组元素的方括号也是操作符。表3.2包含了一切的操作符,然而不用担心它们的优先按次。凭经历,你或许会发明操作符优先级仅仅影响算术操作符和逻辑操作符。
表3.2是一系列操作符,而且是依照优先级划分级别--级别越高,它的优先级也越高。在统一级的操作符有一样的优先级,并从左到右停止盘算,不然,较高的优先级先盘算。利用括号可以准确的掌握优先按次,任安在括号的器材都应当起首停止盘算。
   
表3.2 优先级的按次和操作符的相干性
级别
操作符
描写
相干性
15
=>
在数组界说中毗连数组下标与值
从左到右
14
->
类操作符
从左到右
13
? :
三重操作符
从左到右
12
<, <=,>, >=
小于,小于或等于,大于,大于或等于
没有
11
==, !=, <>
等于,不等于,不等于
没有
10
+, -, !, ~
正号,负号,逻辑或,位转换
从右到左
09
++, --
加一,减一
从左到右
08
<<, >>
左移位,右移位
从左到右
07
/, *, %
除,乘,取模
从左到右
06
+, -
加,减
从左到右
05
&, .
位逻辑与,字符串联接
从左到右
04
|, ^
位逻辑或,位逻辑异或
从左到右
03
||, &&
逻辑或,逻辑与
从左到右
02
=, +=, -=,
*=,/=, .=,
%=, &=, |=,
^=, <<=, >>=
赋值操作符
从左到右
01
or
and
xor
低优先级或
低优先级与
低优先级异或
从左到右
   
在会商单个操作符的例子之前,让咱们看看有关操作符优先级的一些特定规子。如许,咱们可以验证在表3.2中列出的优先级的级别。
上面的例子显示了算术减号操作符比加一操作符有更高的级别:
   
$a = 5;
$b = $a++;
echo "a = $a<br>";
echo "b = $b<br>";
   
以上代码行了局将显示
   
a = 6
b = 5
   
在变量$a加一之前,变量$b被付与$a的值。如今让咱们看看在负算术加号起感化前,有甚么工作产生:
   
$a = 5;
$b = -$a++;
echo "a = $a<br>";
echo "b = $b<br>";
   
以上代码行了局将显示
   
a = 6
b = -5
   
只要在变量$a的值停止负操作(换句话说为-6),然落后行加一操作的时分,变量$b的最初了局值才为-5。这证实了负号操作符比加一操作符的级别更高。1
因为括号外部的操作老是起首履行,所以上面的例子中清晰地显示了除号比加号有更高的级别:
   
// parens around the first two operands.
echo (5 + 9) / 2;
echo "<br>";
   
// parens around the second two operands.
echo 5 + (9 / 2);
echo "<br>";
   
// the default precedence.
echo 5 + 9 / 2;
echo "<br>";
   
以上代码行了局将显示:
   
7
9.5
9.5
   
最初一行所显示的是采取默许优先级的了局,由于了局(9.5)和第二行的了局是分歧的,所以可以得出结论,除号操作符是在加号操作符前先履行的。
等号操作符和其它操作符一样也是操作符,而没有甚么分歧,晓得这一点也很主要,等号操作符一样也有优先级。这个概念能够和直觉纷歧样,上面的例子申明了这个概念。
起首咱们用一个复杂的赋值语句,把变量$a设为1。
   
$a = 1;
   
左面的操作数(1),把值付与了左面的操作数($a)。如今让咱们看一个对照隐晦的例子,把一个付与变量的了局付与另外一个变量:
   
$b = $a = 1;
   
下面的代码行把数字1付与变量$b,这是由于盘算$a = 1的了局为1。因为能够会引发凌乱,所以我不保举在法式中利用这类作风,但是也能够偶然顺手利用。如今让咱们在以上的代码行中增添and操作符。如许,变量$b是付与0,仍是1的成绩也就会被处理。假如 = 操作符的优先级高于and操作符,变量$b将被付与值$a = 1。假如and操作符优先级高于 = 操作符,那末$b将被付与值1和0的与,即0:
   
$b =$a =1 and 0;
   
在以上的代码行履行今后,得出了局是,变量$a和变量$b的值都为1。如许,可以得出 = 操作符有对照高的优先级。
假如想使and 操作符起首履行(工资地进步它的优先级),可使用以下的形式:
   
$b = (($a = 1) and 0);
   
以上代码行的了局是,$a被付与1,且$b被付与0。
本章的其它局部将侧重会商分歧的操作符,而且会商它们是若何任务。=>操作符在本章较早“数组变量”的局部已会商过了。而->操作符也将在第十章“面向对象”中会商。
   
3.4.2三重操作符
三重操作符是在给定的前提下,在两个选择项中做选择。例如:假如公园是在一英里内,那末约翰将会步行去;不然,他会驾车去。语法以下:
   
CONDITION-PART ? TRUE-PART : FALSE-PART
   
这是以下语句的缩略模式:
   
if (CONDITION-PART) {
TREU-PART
} else {
FALSE-PART
}
   
在第四章“法式掌握”中,能找到有关if语句的更多信息。
在三重操作符和它的操作数履行后,凡是把了局值赋给变量:
   
$bin_page_two = ($int_page_number == 2) ? 1 : 0;
   
$bin_page_two的值依附于此语句中前提局部CONDITION-PART($int_page_number==2)运转的了局。假如CONDITION-PART了局为真,那末TRUE-PART的值将赋给$bln_page_two。假如CONDITION-PART了局为假,那末FALSE-PART的值将赋给$bln_page_two。
   
bln_前缀标明此变量应当只保留逻辑值。换句话说,只保留1或0。
   
在一些参考书中,三重操作符也被称作前提操作符,而且它经常使用来掌握运转代码的哪个局部。但是,我不保举利用此操作符,由于它能够使得法式更难读。
鄙人面的例子中,你将无机会看到这些语句是若何隐晦。当需求思索多于两个选择时,可以在三重操作符外部嵌套利用另外一个三重操作符。但是当看到上面的例子的时分,就会发明这是些何等使人难明的代码。
   
1 ? $int_firstVar++ : $int_secondVar++;
0 ? $int_firstVar++ : $int_secondVar++;
$int_firstVar = $int_temp == 0 ?
$int_number_of_files++ :
($int_temp == 1 ?
$int_number_of_records++ :
($int_number == 3 ?
$int_number_of_bytes++ :
$int_number_of_errors++));
   
以这类办法编程,会使法式更难了解且难于保护。而利用if语句,法式就会变得悦目且易于保护代码。更具体信息拜见第四章“法式掌握”。
   
3.4.3 算术操作符
算术操作符所反应的器材在黉舍中已学过了。加、减、乘和除是绝大多半算术语句中最根基的器材。取模操作符有一点深邃;它是取两个操作数相除的余数。例如,10 % 7等于3,这是因为10 / 7等于1,余3。
当法式需求在一列表中轮回,而且每若干项需求运转一些代码时,取模操作符的感化是没法估计的。清单3.7显示了当每十项运转一些代码时,应当怎样做。
   
清单3.7 modulus.php3--每十项显示一段动静
<?php
for ($index = 1; $index <= 100; $index++) {
if ($index % 10 == 0) {
echo "$index<br>";
}
}
?>
   
此法式的输入了局应当如图3.6所示。
   
   
Page 56 图3.6
   
图3.6利用取模操作符,每十个轮回项显示一次
   
注重是每十项显示一次。当改动取模运算符右侧的数值时,将改动在动静显示前有几何项被疏忽。改成15即意味着每十五项显示一次动静。第四章“法式掌握”将具体地描写了if和for语句。
   
3.4.4 前提操作符
这些前提操作符将测试一个变量(或数字)和另外一个变量之间的关系。例如,5是不是大于12(5 GREATER THAN 12)?运算前提操作符和它的操作数的了局老是真(值为1)或假(值为0)。表3.3显示了在PHP中的前提操作符。
   
表3.3 PHP中的前提操作符
操作符 描写
判别相等操作符
op1 == op2 假如op1等于op2,前往真。
例如,6==6为真。
op1 != op2 假如op1不等于op2,前往真。
例如,6!=7为真。
op1 <> op2 假如op1不等于op2,前往真。
例如,6<>7为真。
对照操作符
op1 < op2 假如op1小于op2,前往真。
例如,6<7为真。
op1 <= op2 假如op1小于或等于op2,前往真。
例如,7<=7为真。
op1 > op2 假如op1大于op2,前往真。
例如,6>5为真。
op1 >= op2 假如op1大于或等于op2,前往真。
例如,7>=7为真。
   
注重:熟悉到等于操作符是两个等号,而不是一个,这一点十分主要。人们常常忘失落此划定规矩,在测试前提中利用单个等号,这类毛病常常在编程过程当中产生。
   
3.4.5 一元操作符
一元操作符只影响单个操作数。它们经常使用来改动操作数的符号,和把操作数的值加一或减一。加一即在它原有值的基本上加一,减一即在它原有值的基本上减一。表3.4列出了在PHP中的一元操作符。
   
表3.4一元算术操作符
操作符 描写
+op1 把操作数的正负号改动为不异
-op1 把操作数的正负号改动为相反
!op1 取操作数的逻辑非
~op1 转换操作数的位值
++op1 在操作数在起感化前,操作数值加一
--op1 在操作数在起感化前,操作数值减一
op1++ 在操作数在起感化后,操作数值加一
op1-- 在操作数在起感化后,操作数值减一
   
当引见到一元操作符时,因为增添了难利用的正数,而使操作符变得庞杂。没有几团体会编写象如许的数学语句:345 + -23。但是,在PHP中你能够利用354 + $int_gas_bill的语句,在这里$int_gas_bill代表$23.00的债权;换句话说,这是一个正数。
利用正号操作符不会有任何影响,PHP会疏忽它。单个负号操作符可以把一个负数酿成正数,或把一个正数酿成负数。例如,假如有一个名为$int_first的变量,它的值为34。当显示时,-$int_first将显示-34。
逻辑非(!)操作符经常使用来把逻辑真转换为逻辑假。例如,!34为零,且!0为真。
   
注重:逻辑真的值为1,逻辑假的值为0。
   
位转换操作符是指把操作数的每位都从1改变为0,把0改变为1。在我二十年的编程履历中,我从没有感觉必需利用这个操作符。因而,我不再华侈你的工夫,供应有关与此的例子了。
假如++或--操作符呈现在操作符的后面,那末操作数的值在起感化前,其值就加一或减一。假如++或--操作符呈现在操作符前面,那末操作数的值在按需求起感化后,其值再加一或减一。清单3.8显示了若何利用先加一的操作符。
   
清单3.8 preincrement.php3--利用先加一操作符
<?php
// Original Way
$int_number_of_pages = 5;
$int_number_of_pages = $int_number_of_pages + 1;
echo "$int_number_of_pages<br>";
   
// New Way
$int_number_of_pages = 5;
echo "++$int_number_of_pages<br>";
?>
   
此法式运转的了局以下:
   
6
6
   
新的编码体例比原本的编码体例要冗长些。语句echo "++$int_number_of_pages<br>",起首$int_number_of_pages变量加一,然后履行echo号令。
先减一操作符的利用办法和先加一操作符的利用办法一样。下一个例子,清单3.9显示了若何利用后加一操作符。
   
清单3.9 postincrement.php3--利用后加一操作符
<?php
// Original Way
$int_number_of_pages = 5;
$int_current_page_number = $int_number_of_pages;
$int_number_of_pages = $int_number_of_pages + 1;
echo "$int_number_of_pages $int_current_page_number<br>";
   
// New Way
$int_number_of_pages = 5;
$int_current_page_number = $int_number_of_pages++;
echo "$int_number_of_pages $int_current_page_number<br>";
?>
   
此法式运转的了局以下:
   
6 5
6 5
   
语句$int_current_page_number = $int_number_of_pages++,暗示先把变量$int_number_of_page的值赋给$int_current_of_page,然后变量$int_number_of_page的值加一。这个例子有助于了解后加一操作符和后减一操作符不会影响在赋值操作符右边变量的值。假如看到了后加一操作符和后减一操作符时,要疏忽它们,先履行语句。然后,当履行完今后,然后按需求应用后加一操作符和后减一操作符。
   
3.4.6 位操作符
位挪动操作符,如表3.5所示,经常使用来向左或右按给定次数挪动操作数中的一切位。当需求乘或除整数值时,就能够便利地利用比特操作符。例如,数值3也可等于二进制的11,或((1*2)+1)。在二进制中每个字都暗示一个比特位,它是在盘算机内存中可以修正的最小单位。
   
表3.5 比特操作符
操作符
描写
op1 << op2
左移操作符向右边挪动比特位,抛弃最左面的比特位,而且最左面的比特地位0。每向左挪动一名相当于op1乘以2,但效力更高。
op1 >> op2
右移操作符向右侧挪动比特位,抛弃最左面的比特位,而且最左面的比特地位0。每向右挪动一名相当于op1除以2,但效力更高。
op1 & op2
与操作符对照两个操作数绝对应的比特位,假如两个比特位都为1,那末了局为1;不然,前往0。
op1 | op2
或操作符对照两个操作数绝对应的比特位,假如两个比特位有一名为1,那末了局为1;不然,前往0。
op1 ^ op2
异或操作符对照两个操作数绝对应的比特位,假如两个比特位不异,那末了局为1;不然,前往0。
   
上面的例子顶用>>操作符暗示除以4。
   
$int_a = 128;
$int_b = $int_s >> 2;
echo "$int_b<br>";
   
此法式运转的了局以下:
   
32
   
如今让咱们看看在挪动操作之前和以后变量的位形式。起首,$int_a被付与128(十进制)或10000000(二进制)。然后$int_a的值向左挪动两次。所以,挪动后的值为00100000或32,然后把32赋给变量$int_b。
当向右挪动比特位时,最右侧的比特位就会丧失。鄙人面的例子中,用>>操作符取代除以8的操作:
   
$int_a = 129;
$int_b = $int_a >> 3;
echo "$int_b<br>";
   
此法式运转的了局以下:
   
16
   
由于16的比特值为00010000,可以发明最右侧的比特位消逝了。这里有一个用<<操作符的例子。咱们把128乘以8:
   
$int_a = 128;
$int_b =$int_a << 3;
echo "$int_b<br>";
   
此法式运转的了局以下:
   
1024
   
正如所能看到的,1024的值是八比特位所能暗示的最大值。这申明能利用的比特位其实不限于一个字节。现实上,PHP利用一个标量所暗示的字节数目是无限制的,在大多半情形下,这个限制为四。
   
3.4.7 字符串联接操作符
字符串相加操作符把两个字符串联接起来。假如两个操作数中有一个是数字时,它将主动转化为字符串。上面显示的例子中停止了主动转换:
   
$str_a = "This box can hold " . 55 . " items.";
echo "$str_a<br>";
   
这些代码运转的了局以下:
   
This box can hold 55 items.
   
数字55主动转换成字符串,然后再和其它字符串相联合。注重在终究字符生成时,字符文本中有空格,数字双方也有空格;如许做可使句子更轻易读懂。
也能够用变量当作操作数,停止以下所示的毗连操作:
   
$str_a = 'AAA';
$str_a = 'BBB';
$str_c = $str_a . $str_b;
echo "$str_c<br>";
   
这些代码运转的了局以下:
   
AAABBB
   
注重字符串联接时不需求到场空格或其它分隔符。假如但愿字符串联接今后之间有空格的话,必需包管最少在一个字符串中有空格字符,地位在第一个字符串的尾部,或是在第二个字符串的首部。
   
3.4.8 逻辑操作符
逻辑操作符履行布尔逻辑操作,或称为真/假逻辑操作。在如许一个句子中:“假如约翰发热,并且鼻塞或耳朵痛,而且岁数不超越60岁的话,那末约翰就是伤风了。”该句中的“和”(and),“或”(or)和“非”(not)就是逻辑操作符。
逻辑操作符经常使用于法式的if 或while掌握语句中。掌握语句将鄙人章“法式掌握”中讲述,但是,在这里咱们可以先对逻辑操作符做一注释。表3.6中给出了PHP的逻辑操作符。
   
表3.6 逻辑操作符
操作符 申明
op1 && op2 对两个操作数停止逻辑与操作
op1 || op2 对两个操作数停止逻辑或操作
op1 and op2 对两个操作数停止逻辑与操作
op1 or op2 对两个操作数停止逻辑或操作
op1 xor op2 对两个操作数停止逻辑异或操作
   
逻辑操作符可以掌握法式,依据多个分歧前提来决意应当履行甚么举措。每个操作符和操作数运算后城市得出一个真或假值。鄙人面的例子中演示了利用逻辑前提的几种分歧办法。
逻辑运算符与(&&)用于肯定两个操作数是不是都为真。表3.7给出了利用与(&&)操作的四种分歧组合的了局值。
   
表3.7 与(&&)操作了局表
op1 op2 op1&&op2
0 0 0
1 0 0
0 1 0
1 1 1
   
上面的代码显示了若何利用与(&&)操作符:
   
if ($int_a == 10 && $int_b == 9) {
echo 'Error!';
};
   
假如两个操作数最少有一个为假时,都不会履行echo号令。特地说一下,在此例子中显示了==操作符有比&&操作符更高的优先级。每个==操作符都先履行,且了局值被当做&&操作符的两个操作数。
或操作符(||)用于肯定两个操作数是不是有一个为真。表3.8给出了利用或(||)操作的四种分歧组合的了局值。
   
表3.8 或(||)操作了局表
Op1 op2 op1||op2
0 0 0
1 0 1
0 1 1
1 1 1
   
上面的代码显示了若何利用或(||)操作符:
   
if ($int_a == 10 || $int_b == 9) {
echo 'Error!';
};
   
假如两个==操作符履行的了局有一个为真时,那末城市履行echo号令。
逻辑与和逻辑或操作符都有短路特征。逻辑与操作符的目标是肯定两个操作数是不是都为真。假如PHP肯定第一个操作数为假时,那末就不需判别第二个操作数。逻辑或操作符的目标是肯定两个操作数是不是最少有一个为真。假如第一个操作数为真时,那末就不需判别第二个操作数。
假如不当心的话,那末短路特征能够会成为掉误的源泉。例如,鄙人面的代码段中,假如$int_a++履行了局为真时,那末变量$int_b将不会加一。
   
if ($int_a++ || $int_b++) {
echo "true<br>";
echo "a=$int_a b=$int_b<br>";
}
   
当心:或许你会利用以下代码来肯定$int_a是不是等于9或10。但请不要如许做。
if ($int_a == (9 ||10)) {
echo "Error!<br>";
};
PHP不克不及准确履行以上代码。测试$int_a的准确办法是明白地书写每个需求剖断是不是为真的子前提。准确的代码办法以下:
if ($int_a == 9 || $int_a == 10) {
echo "Error!<br>";
};
   
与、或和异或这些优先级对照低的操作符,和它们较高优先级的伙伴一样可以履行一样的操作。但是,它们的低优先级特点,使得它们十分合适有前提的履行一些代码,而不用重写if语句。不幸的是,低优先级逻辑操作符利用的大多半情形触及到函数,有关话题本书还没有会商过。在不思索有关函数细节的前提下,让咱们先看一个或操作符的例子。
每个PHP函数都前往一个值,这个值又常被当做操作数。因此,操作符的短路特征经常使用于掌握法式流。假如或操作符的第一个操作数为真时,那末将履行第二个操作。反过去看,假如第一个操作了局为假时,那末将停止第二个操作。当函数呈现毛病时,大多半函数前往假。因而,仅仅当呈现毛病时,或操作符可用来履行代码。例如:
   
0 or die("Problem connecting to printer.<br>");
echo "Program Over.<br>";
   
这些代码运转的了局为
   
Problem connecting to printer.
   
把或操作符右边的操作数改成1时,将显示
   
Program Over.
   
3.4.9 赋值操作符
本章之前提到的例子中都利用到了根基的赋值操作符。除根基的赋值操作符外,PHP有一些复杂的赋值操作符和另外一个操作符组合在一同的快捷赋值操作符。例如,取代书写$int_a = $int_a / $int_b,而可以简写为$int_a /= $int_b。利用快捷操作符的长处是,除可以少输出字符外,利用赋值操作符的目标也会变得十分明晰。
表3.9列出了在PHP中的一切赋值操作符。在读完本章中其它局部中对分歧操作符类型的引见以后,应当对下表中描写的一切操作符都很熟习。
   
表3.9 赋值操作符
操作符 描写
var = op1 把op1的值赋给var。
var += op1 把var+op1的值赋给var。
var -= op1 把var-op1的值赋给var。
var *= op1 把var*op1的值赋给var。
var /= op1 把var/op1的值赋给var。
var %= op1 把var%op1的值赋给var。
var .= op1 把var.op1的值赋给var。
var &= op1 把var&op1的值赋给var。
var |= op1 把var|op1的值赋给var。
var ^= op1 把var^op1的值赋给var。
var <<= op1 把var<<op1的值赋给var。
var >>= op1 把var>>op1的值赋给var。
   
你会发明赋值操作符的另外一方面不是凭直觉可以想到的,可以象其它操作符一样利用赋值操作符。例如,以下的代码将把变量$int_a和$int_b都付与3:
$int_a = $int_b = 3;
   
3.5 总结
本章引见了有关数值、变量、常量和操作符的概念。数值是直接放在源码中的数,而且法式不克不及改动它的值。变量放在保留法式数据的盘算机内存中。之所以叫变量,是由于可以按需求付与分歧的值。常量从实质上说是定名的数字(例如π),它对法式归档来讲有效,而且使代码更轻易布置。操作符是告知盘算机要做甚么操作。
数值有时被称为硬编码的数,你应当已了解了数值,和它们的三种分歧的暗示体例,十进制、八进制和十六进制。十分大或十分小的值可使用迷信暗示法来描写。
字符串有一点庞杂,单引号字符串、双引号字符串和反引号字符串都经常使用来保留一系列字符。反引号字符串还有一个其它的感化,它们告知PHP把字符串送到操作体系去履行。
本义字符经常使用来暗示难于从键盘输出的字符,或暗示此字符有很多其它感化。例如,假如要在双引号包括的字符串中利用时双引号时,能够会在真正停止输出字符串前,停止此字符串。反斜杠字符被用来改动它本来的寄义。
你已懂得了两品种型的变量:标量和数组。标量保留一个单一的数字或文本字符串。数组变量保留有一系列标量。数组中每个元素都有一个相干联的数组下标,因此,数组是一种保留下标-数值对的体例。当一个数组中包括有另外一个数组时,即为多维数组或散列表。鄙人标和数值对中的数值中是一个数组时,就创立了多维数组或散列表。
变量交换是用来在字符串外部用变量的值来交换变量的。然而,变量交换不克不及用于多于一级深度的数组。
静态数组名供应了可以随时创立的变量名的才能。因为PHP数组答应创立庞杂的数据布局,所以我以为不需求这类才能。
当一样的数字在法式中呈现屡次时,就需求创立常量。利用常量可以把归档的要素到场到法式中。另外,假如在法式的入手下手局部界说常量时,修正法式就会变得轻易些。
你已进修了操作符是若何号令PHP履行甚么操作的,一些操作符有对照高的优先级,因此会起首履行它们和它们的操作数。一个操作数可以很复杂,如数字10;也能够十分庞杂,包括有变量、数字和其它操作符。这意味着它们实质上是递归的。
PHP有很多类型的操作符,它们中的大多半都在本章会商过。刚入手下手引见了三重操作符和算术操作符,然后引见了前提操作符和一元操作符。在本章也引见了加一和减一操作符,随后,引见了位操作符和逻辑操作符。当需求疾速整数相乘和相除时,有时能够会用到位移操作符。
字符串联接操作符经常使用来把两个字符串联接起来,赋值操作符是用来给一个变量赋值。大多半赋值操作符都有缩写,如许不但可以削减输出,并且可使赋值的意义加倍明晰。
下一章“法式掌握”将会商语句的界说,和若何利用函数来使法式模块化。
   

php   manual(PHP手册)肯定是要从网上下载一个的,它很权威,也很全面,我自己认为它是一本很好的参考书,但是不适合新手当教材使用。

老尸 发表于 2015-2-16 01:55:28

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

因胸联盟 发表于 2015-3-4 22:23:26

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

飘灵儿 发表于 2015-3-11 21:14:12

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

愤怒的大鸟 发表于 2015-3-19 13:30:15

对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。

灵魂腐蚀 发表于 2015-3-25 03:46:44

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

莫相离 发表于 2015-4-9 13:00:28

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

山那边是海 发表于 2015-4-16 10:10:32

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

海妖 发表于 2015-4-21 07:11:58

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

蒙在股里 发表于 2015-4-21 18:12:34

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

若天明 发表于 2015-4-21 19:12:04

Ps:以上纯属原创,如有雷同,纯属巧合

仓酷云 发表于 2015-4-22 08:54:09

装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。

小女巫 发表于 2015-4-26 02:53:47

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

若相依 发表于 2015-4-28 22:27:33

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

变相怪杰 发表于 2015-5-6 00:09:15

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

爱飞 发表于 2015-6-7 21:42:24

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

金色的骷髅 发表于 2015-6-26 04:01:26

对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。

分手快乐 发表于 2015-7-5 01:49:52

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

再现理想 发表于 2015-7-13 19:48:35

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

简单生活 发表于 2015-7-18 23:54:57

对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
页: [1]
查看完整版本: PHP网站制作之《PHP法式设计》 第三章 PHP中的数据处...