找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 575|回复: 0

05《PHP和MySQLweb开发》第1章php快速入门学习笔记

[复制链接]
发表于 2011-10-10 08:25:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
第一章 PHP快速入门教程
1.2.1 创建订单表单
表单中输入的数据将按照METHOD属性中指定的方法发送到这个URL,该方法可以是GET(附加在URL的结尾)或POST(以单独消息的形式发送)。
表单域中的名称(也就是表单的name)――tireqty、oilqty和sparkqty。在这个PHP脚本中,我们还将使用这些名称。正是由于这一点,给表单域定义有意义的名称是非常重要的。
1.2.2 表单处理
1.3 在HTML中嵌入PHP。使用PHP标记
<?php和?>叫做PHP标记。
PHP标记有4种不同的风格可供我们使用。
XML风格:<?php echo '<p>Order Processed.</p>'; ?>
这是PHP推荐使用的标记风格。
简短风格:<? echo '<p>Order Processed.</p>'; ?>
它遵循SGML处理说明的风格。要使用这种标记风格――输入字符最少――你必须在配置文件中启用short_open_tag选项,或者启用短标记选项编译PHP。
scrīpt风格:<scrīpt LANGUAGE='php'> echo '<p>Order Processed.</p>'; </scrīpt>
ASP风格:<% echo '<p>Order Processed.</p>'; %>
这种标记风格与ASP或ASP.NET的标记风格相同。如果在配置认定中启用了asp_tags选项,就可以使用它。
使用echo语句具有一个非常简单的结果,它将传递给其自身的字符串打印(或者回显)到浏览器。
1.3.4 空格
在PHP中,分号是用来分隔语然的,就像英文的逗号用来分隔句子。
间隔字符,例如换行(回车)、空格和Tab(制表符),都被认为是空格。
浏览器将会忽略HTML的字格字符。PHP引擎同样会忽略这些空格字符。
虽然PHP语句之间没必要添加空格字符,但每一行放一条单独语句,将便于阅读代码。
1.3.5 注释
PHP支持C、C++和Shell脚本风格的注释。
C风格注释。多行注释可以出现在PHP脚本的开始处。
/* Author: Bob Smity
    Last modified: Aprial 10
    This scrīpt processed the customer orders.
*/
多行注释是无法嵌套的。
C++风格的单行注释:
echo '<p>Order Processed.</p>'; // Start printing order
Shell脚本风格:
echo '<p>Order Processed.</p>'; # Start printing order
无论何种风格的注释,在注释符号(#或//)之后行结束之前,或PHP结束标记之前的所有内容都是注释。
1.4 添加动态内容
echo date('H:i, jS F');
结果:12:42, 26th March
1.4.1 调用函数
1.4.2 使用date()函数
date()函数需要一个传递给它的变量是格式化字符串,这个字符串表示所需要的输出格式。H是24小时格式的小时,i是分钟,如果小时数和分钟数是个位数,需要在前面补0,j是该月的日期,不需要前面的补0,而s表示顺序后缀,F是月份的全称。
1.5 访问表单变量
以PHP变量的形式访问每一个表单域,其中变量名称必须与表单域的名称一致。
可以有3种方法来访问表单数据:

$tireqty    // short style
$_POST['tireqty']   // medium style
$HTTP_POST_VARS['tireqty'] // long style
简短风格($tireqty):非常方便,但是需要将register_globals配置选项设置为on。在PHP 4.2.0以后的所有版本中,该配置的默认值为off。以前,该配置的默认值为on。这个风格也可能会使你遇到代码不安全的错误,因此我们不再推荐这种风格。
中等风格($_POST['tireqty']):是如今所建议的。
冗长风格($HTTP_POST_VARS['tireqty']):是最详细的,但是请注意,它已经过时。
中等风格涉及了从$_POST、$_GET或$_REQUEST数组之一检索变量。$_GET或$_POST数组之一都可以保存表单变量的细节。使用哪一个数组取决于提交表单时使用的方法是POST还是GET。此外,通过POST或GET方法提交的所有数据都可以通过$_REQUEST数组获得。
这些数组被称作是超级全局(superglobal)变量。
由于冗长风格和中等风格的变量名称在一定程序上是比较繁琐的,而且还依赖于变量类型,因此我们将从创建便于使用的复制操作开始。
可以使用赋值操作符将一个变量值复制给另一个变量。$tiregty = $_POST['tireqty'];
1.5.2 字符串的连接
点号是字符串连接符,它可以将几段文本连接成一个字符串。
对于任何非数组变量,也可以将变量写入到一个由双引号引用起来的字符串中(数组变量要复杂一点)。
echo &quot;$tireqty tires<br />&quot;; 等价于 echo $tireqty.' tires<br />';
用一个字符串的内容来代替一个变量的操作就是插补(interpolation)。
插补操作只是双引号引用的字符串的特性之一。不能像这样将一个变量名称放置在一个由单引号引用的字符串中。
在双引号中,变量名称将被变量值所替代,而在单引号中,变量名称,或者任何其他的文本都会不经修改而发送给浏览器。
1.5.3 变量和文本
已经介绍的两种字符串类型――一种是具有双引号的,而另一种是具有单引号的,PHP将试着计算双引号字符串,而单引号字符串将被当作是真正的文本。
新增加的第3种指定字符串的方法,heredoc语法(<<<)。通过指定一个用来结束字符串的结束标记,Heredoc语法允许指定长字符串。
theEnd标记是非常模糊的。它只需要保证不会出现在文本中。要关闭一个heredoc字符串,可以在每一行的开始处放置一个关闭标记。
Heredoc字符串是插补的,就像双引号字符串。
1.6 理解标识符
标识符是变量的名称(函数和类的名称也是标识符)。标识符的规则:
标识符可以是任何长度,而且可以由任何字母、数字、下划线组成。
标识符不能以数字开始。
标识符是区分大小的。函数名称则可以是任意大小字的。
一个变量名称可以与一个函数名称相同。虽然这是允许的,但应该尽量避免。

1.7 创建用户声明的变量
PHP不要求在使用变量之前声明变量。当第一次给一个变量赋值时,你才创建了这个变量。

1.8 给变量赋值
可以使用赋值操作符(=)给一个变量赋值。

1.9 检查变量的类型
1.9.1 PHP的数据类型
Integer(整数)――用来表示整数。
Float(浮点数,也叫Double,双精度)――用来表示所有的实数。
String(字符串)――用来表示字符串。
Boolean(布尔)――用来表示true或false。
Array(数组)――用来保存具有相同类型的多个数据项。
Object(对象)――用来保存类的实例。
此外还有两个特殊的类型:NULL(空)和resource(资源)。没有被赋值、已经被重置或者被赋值为特殊值NULL的变量就是NULL类型的变量。特定的内置函数(例如数据库函数)将返回resource类型的变量。它们都代表外部资源(例如数据库连接)。基本上不能直接操作一个resource变量,但是通常它们都将被函数返回,而且必须作为参数传递给其他函数。

1.9.2 类型强度
PHP是一种非常弱的类型语言。在PHP中,变量的类型是由赋给变量的值确定的。
PHP可以在任何时间根据保存在变量中的值来确定变量的类型。
PHP将“自动地”获得输入的数据类型。一旦从变量中检索变量值,它将返回具有相同数据类型的数据。

1.9.3 类型转换
使用类型转换,可以将一个变量或值转换成另一种类型。
如: $totalamount = (float)$totalqty;

1.9.4 可变变量
可变变量允许我们动态地改变一个变量的名称。
这个特性的工作原理是用一个变量的值作为另一个变量的名称。
如: $varname = 'tireqty'; $$varname =5; 等价于:$tireqty= 5;

1.10 声明和使用常量
一个常量可以保存一个值,但是常量值一旦被设定后,在脚本的其他地方就不能再更改。
如:define('TIREPRICE', 100);
常量名称都是由大写字母组成的。这样就可以很容易区分变量和常量。这个惯例并不是必需的,但是它却可以使代码变得更容易阅读和维护。
在引用一个常量的时候,它前面并没有$符号。如果要使用一个常量的值,只需要使用其名称就可以了。如:echo TIREPRICE;
PHP还预定义了许多常量。了解这些常量的简单方法就是运行phpinfo()命令。
变量和常量的另一个差异在于常量只可以保存布尔值、整数、浮点数或字符串数据。这些类型都是标量数据。
1.11 理解变量的作用域
作用域是指明一个脚本中某个变量在哪些地方可以使用或可见。PHP具有6项基本的作用域规则:
内置超级全局变量可以在脚本的任何地方使用和可见。
常量,一旦被声明,将可以在全局可见,也就是说,它们可以在函数内外使用。
在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部。
函数内部使用的变量声明为全局变量时,其名称要与全局变量名称一致。
在函数内部创建并被声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值。
在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。

在PHP4.1以后的版本中,$_GET和$_POST数组以及一些其他特殊变量都具有各自的作用域规则。这些被称作超级全局变量,它们可以在任何地方使用和可见,包括内部和外部函数。
$GLOBALS 所有全局变量数组,例如$GLOBALS[变量名]
$_SERVER服务器环境变量组$_GET 通过get方法传递的数组
$_POST 通过post方法传递的数组$_COOKIE cookie变量数组
$_FILES 文件上传相关的变量数组$_ENV 环境变量数组
$_REQUEST所有的用户请求变量数组包含get,post,cookie不含files
$_SESSION 会话变量数组。默认情况都是全局变量。
1.12 使用操作符
操作符是用来对数值和变量进行某种操作运算的符号。
操作符可以带有1个、2个或者3个运算对象,其中大多数操作符都是带有两个运算对象。这些运算对象叫做操作数,也就是要操作的对象。
1.12.1 算术操作符
+ 加,-减,*乘,/除,%取余。
可以将减号当作一个一元操作符来使用,表示负值。
算术操作符通常用于整型或双精度类型的数据。如果将它们应用于字符串,PHP会试图将这些字符串转换成一个数字。如果其中包含“e”或“E”字符,它就会被当作是科学表示法并被转换成浮点数。否则将会被转换成整数。PHP会在字符串开始处寻找数字,并且使用这些数字作为该字符串的值,如果没找到数字,该字符串的值则为0。
1.12.2 字符串操作符 .  点号
1.12.3 赋值操作符
1. 赋值运算返回符
如:$b = 6+($a=5);
2. 复合赋值操作符
+= -= *= /= %= .=
$a += 5;
3. 前置递增递减和后置递增递减运算符
echo ++$a;
4. 引用
引用就像一个别名,而不是一个指针。$a和$b都指向了内存的相同地址。
$a = 5; $b = &$a; $a = 7; //$a and $b are now both 7;
可以通过重置来改变所指向的地址,如:unset($a);
1.12.4 比较操作符
比较操作符表达式根据比较结果返回逻辑值:true或false。
1. 等于操作符
如:$a == $b
这个操作符很可能会与赋值操作符“=”混淆。同时,即使出现混淆,程序也不会报错,但是通常不会返回你所希望的结果。一般地说,非0数值都是true,0值为false。
使用赋值操作符而不是等于比较操作符是一个很容易犯的错误,也是非常难发现的逻辑错误。通常,应该仔细检查这两个操作符的使用。
2. 其他的比较操作符
==等于,===恒等,!=不等,<>不等,!==不恒等,<小于,>大于,<=小于等于,>=大于等于。
对于恒等操作符,只有两边的操作数相等并且具有相同的数据类型时,其返回值才为true。
1.12.5 逻辑操作符
逻辑操作符用来组合逻辑条件的结果。
!非,&&与,||或,and与(与&&相同,但其优先级较低),or或(与||相同,但其优先级较低)。
1.12.6 位操作符
位操作符可以将一个整型变量当作一系列的位(Bit,比特)来处理。
&按位与,|按位或,~按位非,^按位异或,<<左位移,>>右位移。
1.12.7 其他操作符
逗号操作符“,”是用来分隔函数参数和其他列表项的。
new和->,它们分别用来初始化类的实例和访问类的成员。
1. 三元操作符
如:($grade >= 50 ? 'Passed' : 'Failed')
2. 错误抑制操作符
错误抑制操作符可以在任何表达式前面使用。
如:)
如果没有@操作符,这一行代码将产生一个除0警告。使用这个操作符,这个警告就会被抑制住。
如果通过这种方法抑制了一些警告,一旦遇到一个警告,你就要写一些错误处理代码。如果已经启用了PHP的track_errors特性,错误信息将会被保存在全局变量$php_errormsg中。
3. 执行操作符
执行操作符是一对反向单引号(``)。
PHP将试着将反向单引号之间的命令当作服务器端的命令行来执行。表达式的值就是命令的执行结果。
如:$out = `dir c:`; echo &quot;<pre>'. $out. '</pre>';
此外,还有其他的方法可以执行服务器端的命令。
4. 数组操作符
数组操作符([])允许访问数组元素。在某些数组上下文中,也可以使用=>操作符。
+联合,==等价,===恒等,!=非等价,<>非等价,!==非恒等。
+执行了标量类型的加操作和数组的联合操作。
5. 类型操作符
instanceof在面向对象编程中使用。它允许检查一个对象是否是特定类的实例。

1.13 操作符:计算表单总金额
1.14 理解操作符的优先级和结合性:表达式求值
圆括号的作用是提高圆括号内部操作符的优先级。
Print等价于echo。这两个结构都将生成输出。print和echo 都不是真正的函数,但是都可以以带有参数的函数形式进行调用。二者都可以当作一个操作符:只要将显示的字符串放置在echo或print关键字之后。
以函数形式调用print将使其返回一个值(1)。如果希望在一个更复杂的表达式中生成输出,这个功能可能是有用的,但是print要比echo的速度慢。
1.15 使用可变函数
1.15.1 测试和设置变量类型
PHP中有两个常见的函数,分别是gettype()和settype()。
要使用gettype()函数,必须先给它传递一个变量。它将确定变量的类型并且返回一个包含类型名称的字符串,如果变量类型不是标准类型中的整型、双精度类型(对于浮点类型来说)、字符串类型、数组或对象之一,该函数就会返回“unknown type(未知类型)”。
要使用settype()函数,必须先给它传递一个要被改变类型的变量,以及一个包含了上述类型列表中某个类型的字符串。
PHP并没有混合数据类型 ,但是由于PHP在类型处理方面非常灵活,因此许多函数可以以许多(或者任意)的数据类型作为参数。这些类型所允许的参数通常都是伪混合类型。
PHP还提供了一些特定类型的测试函数。
is_array();is_double,is_float(),is_real();is_long(),is_int(),is_integer();is_string;is_object;is_resource();is_null();is_scalar――检查该变量是否是标量,也就是是否是整数、布尔值、字符串或浮点数;is_numeric()――检查该变量是否是任何类型的数字或数字字符串;is_callable()――检查该变量是否是有效的函数名称。
1.15.2 测试变量状态
isset()函数需要一个变量名称作为参数,如果这个变量存在则返回true,否则返回false。也可以传递一个由逗号间隔的变量列表,如果所有变量都被设置了,isset()函数将返回true。
unset()函数用来销毁变量。
empty()函数用来检查一个变量是否存在,以及它的值是否为非空和0,相应的返回值为true中false。
这些函数使用起来非常方便,可以确保用户正确地填写表单。
1.15.3 变量的重解释
可以通过intval(),floatval(),strval()函数来实现转换变量数据类型的目的。
intval()函数也允许在要转换的变量为字符串时指定转换的进制基础。(这样,就可以将16进制的字符串转换成整数)。
1.16 实现控制结构
1.17 根据条件进行判断
1.17.1 if语句
if语句的条件必须用圆括号“()”括起来。
1.17.2 代码块
可以使用花括号“{}”来声明代码块。
PHP并不关心代码是如何布局的。但是,为了便于阅读代码,应该将它们缩进。
1.17.3 else语句
1.17.4 elseif语句
可以将elseif语句随意写成elseif或else if――中间的空格是可有可无的。
如果要编写一系列的级联大elseif语句,应该注意到,其中只有一个语句块将被执行。如果编写的条件语句其值同时为true的不止一个,那么只有第一个为true的条件下的语句或语句块将被执行。
1.17.5 switch语句
switch允许条件可以有多于两个的可能值。
必须提供一个case语句来处理每一个条件值,并且提供相应的动作代码。此外,还应该有一个默认的case条件来处理没有提供任何特定值的情况。
switch语句和if或elseif语句的行为有所不同。如果没有专门使用花括号来声明一个语句块,if语句只能影响一条语句。而switch语句刚好相反。当switch语句中的特定case被匹配时,PHP将执行该case下的代码,直至遇到break语句。如果没有break语句,switch将执行这个case以下所有值为true的case中的代码。当遇到一个break语句时,才会执行switch后面的语句。
1.17.6 比较不同的条件
1.18 通过迭代实现重复动作
1.18.1 while循环
通常,当不知道所需的重复次数时,可以使用while循环语句。如果要求一个固定次数的重复,可以考虑使用for循环语句。
当“\n”字符出现在一个引号的字符串中,它将解释成一个换行字符。
1.18.2 for和foreach循环
在功能方面,while版本的循环语句和for版本的循环语句是等价的。for循环更加紧凑。
需要注意的一点是,可以将可变变量和for循环结合起来重复一系列的表单域。例如,如果你具有名称为name1、name2、name3等等的表单域,就可以像如下代码所示的这样进行处理:
for ($i=1; $i <= $unmname; $i++)
{
$temp= &quot;name$i&quot;;
echo $$temp.'<br />';
}
通过动态地创建变量名称,可以依次访问每一个表单域。
除了for循环外,PHP还提供了foreach循环语句,它专门用于数组的使用。

1.18.3 do...while循环
do...while循环与while循环不同,因为它的测试条件放在整个语句块的最后。这就意味着do...while循环中的语句或语句块至少会执行一次。
1.19 从控制结构或脚本中跳出
如果希望终止一个循环,可以使用在介绍switch循环时提到的break语句。如果在循环中使用了break语句,脚本就会从循环体后面的第一条语句处开始执行。
如果希望跳到下一次循环,可以使用continue语句。
如果希望结束整个PHP脚本的执行,可以使用exit语句。当执行错误检查时,这个语句非常有用。
1.20 使用可替换的控制结构语法
对于已经介绍过的所有控制结构,还有一个可替换的语法形式。它由替换开始花括号({)的冒号(:)以及代替关闭花括号(})的新关键字组成,这个新关键字可以是endif、endswitch、endwhile、endfor或endforeach,这是由所使用的控制结构确定的。对于do...while循环,没有可替换的语法。
1.21 使用declare
PHP的另一个控制结构是declare结构,它并没有像其他结构一样在日常编程中经常使用。
这种结构用来设置代码块的执行指令――也就是,关于后续代码如何运行的规则。目前,只实现了一个执行指令,ticks。可以通过插入指令ticks=n来设置它。它允许在代码块内部每隔n行代码运行特定的函数,这对于性能测试和调试来说是非常有用的。
1.22 下一章:保存客户的订单
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部快速回复上一主题下一主题返回列表找客服手机访问
快速回复 返回顶部 返回列表