十月 27, 2006

数据类型

PHP提供8种类型的值或数据类型。
4种是标量(单个值)类型:整型、浮点型、字符串和布尔型。
两种(复合)类型:数组和对象。
剩下两种特殊类型:资源(resource)和NULL。

整型

整型是整数数字。
比如1、12和256。
可接受值的范围随具体的平台而变化,但通常的范围是从-2 147 483 648到+2 147 483 657。
这个范围与C编译器的长数据类型是相同的。
不幸的是,C语言的标准没有指定长数据类型一定在什么范围,所以在一些系统上可能看到不同的整型范围。

整型直接量可以写成十进制、八进制或十六进制。
十进制值由数字序列表示,不能以零开头。
序列可以以正号(+)或负号(-)开始。
如果没有符号就假设为正的。
十进制整数的例子有:

1998
-641
+33

八进制数由一个前导0和一个0~7的数字序列组成。
同十进制一样,八进制数将正号或负号作为前缀。
下面是一些八进制的例子和与之对应的十进制值:

0755 十进制为493

十六进制以0x开始,后面跟数字(0~9)或字母(A~F)序列。
字母可以大写或小写,但通常是大写。
同十进制和八进制值一样,十六进制数也可以包含符号:

0xFF 十进制为255
-0xDADL 十进制为-56017

如果试图将一个太大的整数存放在一个变量中,该整数就会自动转成一个浮点数。

用函数 is_int()[或它的别名is_integer()]来测试一个值是否是整数:

if[is_int($x)]{
//$x 是一个整数
}

浮点型

浮点型(常指实数)是用十进制数字表示数字值。
像整数一样,它的范围限制取决与具体的集体。
PHP浮点数与C编译器的双精度数据类型范围相同。
通常,允许的数值在1.7E-308和1.7E+308之间,精确到15位数字。
如果整数值需要更高的精确度或更广的范围,则可以使用BC或GMP扩展。

PHP认可用两种不同格式书写的浮点数,下面一种是我们每天都用到的:

3.14
0.017
-7.1

PHP也认可可用科学计数法表示的数:

0.314E1 // 3.14
17.0E-3 // 0.017

浮点值仅仅是数的近似表示。
例如,在许多系统中,3.5实际上表示3.4999999999。
这意味着写代码是尽量不要假定浮点数完全表示实际值,如果直接用==比较两个浮点数的值。
一般的方法是比较到几位小数:

if (int($a * 1000)) == int($b * 1000){
//3位小数相等的数字
}

用函数is_float(或它的别名is_real())来测试一个值是否是浮点数:

if (is_float($x)){
//$x 是一个浮点数
}

字符串

以为字符串在WEB应用中是如此普遍,所以PHP为字符串的创建和处理提供了核心级的支持。
字符串是任意长度的字符序列。
字符串直接量不是用单引号就是用双引号来界定:

‘big dog’
“fat dog”

变量用双引号括起来,而单引号中的则不是变量:

$name = “Guido”;
echo “Hi, $name\n”;
echo ‘Hi, $name’;
显示
Hi, Guido
Hi, $name

双引号也支持多种字符转义,如表2—2所示。

单引号中的字符串仅仅认可用\\得到一个反斜杠直接量,用\’来得到一个单引号直接量:

$dos_path = ‘C:\\WINDOWS\\SYSTEM’;
$PUBLISHER = ‘Tim O\’Reilly’;
echo “$dos_path $publisher\n”;
将显示
C:\WINDOWS\SYSTEM Tim O’Reilly

要测试两个字符串是否相等,用==比较操作符:

if ($a == $b) { echo “a and b are equal”}

用函数is_string()来册市一个值是否为字符串:
if (is_string($x)){
//$x 是一个字符串
}

PHP提工操作符和函数来比较、分解,装配(assemble)、查找、替换和休整(trim)字符串,许多专用的字符串函数用于HTTP、HTML和SQL编码。

十月 26, 2006

歌手:Dido 专辑:No Angel
Thank You
My tea’s gone cold,
I’m wondering why I got out of bed at all
the morning rain clouds up my window and I can’t see at all
And even if I could it’d all be grey,
but your picture on my wall
it reminds me that it’s not so bad
it’s not so bad

I drank too much last night,
got bills to pay
my head just feels in pain
I missed the bus and there’ll be hell today
I’m late for work again
and even if I’m there,
they’ll all imply that I might not last the day
and then you call me and it’s not so bad
it’s not so bad and

I want to thank you for giving me the best day of my life
Oh just to be with you is having the best day of my life

Push the door,
I’m home at last and I’m soaking through and through
then you handed me a towel and all I see is you
and even if my house falls down now, I wouldn’t have a clue
because you’re near me and

I want to thank you for giving me the best day of my life
Oh just to be with you is having the best day of my life

I want to thank you for giving me the best day of my life
Oh just to be with you is having the best day of my life

直接量

直接量是直接出现在程序中的数据值。
下面都是PHP中的直接量:
2001
0xFE
1.4142
“Hello world”
‘Hi’
true
null

标识符

标识符只是一个名字。
在PHP中标识符常用于给变量、函数、常量和类命名。
标识符的第一个字符只能是ASCII字母(大写或小写)、下划线(_)或任何一个在ASCII 0×7F和ASCII 0xFF之间的字符。
在首字符后这些字符和数字0 ~ 9都是合法的。

变量名

变量名总是以美圆符号($)开头且区分大小写。
以下是一些合法的变量名:

$bill
$head_count
$MaxinumForce
$I_HBART_PHP
$_INT
PHP对变量名的大小没有任何限制。
另外在变量名中可以随便使用数字和字母字符。
但是,有一些特定的规则需要遵循,这些规则包括:

变量名必须以美圆符号($)开始。
变量名开头可以用下划线开始。
变量名不能以数字字符开头。
变量名必须是相关的和有明显的意义。(以便记忆和理解)

非法变量名:
$90ctsales
$`
$not valid

函数名

函数名是不区分大小写的。
以下是一些合法的函数名:

tally
_ist_all_users
deleteTclFiles
LOWERCASE_IS_FOR_WIMPS
_hide

下面这些函数名都是指相同的函数:

howdy HoWdy HOWDY HOWdy Howdy

类名

类名遵循标准的PHP标识符规则且不区分大小写。
下面是一些合法的类名:

person
account

类名staClass被保留。

常量

常量是简单值的标识符。
只有标量(布尔型、整型、双精度型和字符串型)值可以作为常量。
一旦设定,常量的值就不能改变。
常量通过其标识符引用,用函数define()设置:

define(”PUBLISHER”, “O’Reilly & Associatex”);
echo PUBLISHER;
常量名区分大小写。

关键字

关键字(keyword)是语言为其核心功能而保留的单词。
在对变量、函数、类或常量进行命名时,不能使用与关键字一样的名字。

另外,不能使用与内置PHP函数同名的标识符。

十月 25, 2006

注释

注释是提供给阅读代码的人的信息,但PHP会忽略注释。
即使你认为你将是唯一阅读代码的人,在代码中包含注释也是一个很好的想法,以为在回顾自己几个月前写的代码是,这些代码很容易让你觉得是陌生人写的。

好的习惯是在代码中嵌入尽可能少的注释,而尽可能清楚的解释发生了什么。
不要给显而易见的东西加注释,免得淹没了最重要的注释。
例如,下面的注释就是不必要的:

$x = 17; //将17存储在变量$x中
反之,下面的注释会很好的帮助任何将要维护代码的人:
//HTML 转换成文本

PHP提供了许多方式在代码中包含注释,所有这些方式都借鉴自其他语言,如C、C++和Unix shell。
一般来说,用C语言形式的注释来注释掉代码,用C++形式的注释来注释代码。


shell形式的注释

当在PHP代码中遇到井号(#)时,那么在其后一直到行尾或段尾(无论哪一个在先)的PHP代码都被认为是注释。
这种注释方法是基于Unix shell脚本编程语言的,并且该方法对单行代码的注释或加一条的注解很有用。

因为井号在页面中可见,所以shell形式的注释常被用来标记一段代码:

###############
## cookie 函数
###############

有时井号用在一行代码之前来指明代码有什么作用,常与所注释的代码有相同的缩进量,
如下所示:

if (sdouble_check){
#建立一个HEML表单以请求用户确认操作
echo confirmation_form();
}
单行代码的短注释常放在代码的同一行:

$value = $p * exp($r * $t); #计算符合值

当HTML和PHP代码紧密混合在一起的时候,使用PHP结束标签来终止注释:

Then another
将显示 Then another 4

C++形式的注释

当在PHP代码中遇到两个斜杠(//)时,其后一直到行末或段末(无论哪一个在先)的所有代码都被认为是注释。
这种注释方法来自于C++语言,其结果与shell注释形式相同。

下面是用C++注释重写的shell注释形式的例子:

//////////////
// cookie 函数
//////////////

if ($double_check){
//建立一个HTML表单以请求用户确认操作
echo confirmation_form();
}

$value = $p * exp ($r * $t); //计算复合值

Then another
将显示 Then another 4

C形式的注释

shell和C++形式的注释对注解代码或加一条短的注解很有用,但是长的注释要求有不同的形式。
同样,PHP支持注释块,其语法来自于C语言。
当PHP遇到一个斜杠后跟着一个星号(/*),其后所有字符一直到遇到一个星号后跟着一个斜杠(*/)的部分都被认为是注释。
这种注释与前面介绍的那些不同,他可以跨越多行。

下面是一个C语言形式的多行注释:
/* 在这段代码中,我们为一组变量分配数值,
这样做并没有什么实际的理由,在此只是举个例子
*/
$a = 1; $b = 2; $c = 3; $d =4;
因为C语言形式的注释有特定的开始和结束标记,所以可以使注释与代码紧密的结合在一起,但是这样会使代码更难读,所以不赞成使用:

/* 这段注释和代码混在了一起,
对吧?*/ $e =5; /*这段注释效果不错*/
C语言的形式注释不象其他类型,其注释一直持续到结束标记。
尽量不要尝试嵌套。

词法结构

编程语言的词法结构是指管理如何用语言写程序的基本规则的集合。
词法结构是最低级的语言语法,并且指定了变量名是什么样子,什么字符常用做注释,以及如何将程序语句分开等等。

  • 大小写

同内置结构和关键字(如echo、while、class等等)一样,用户自定义的类名和函数名也是不区分大小写的。
因此echo ‘hello,world’;和ECHO’hello,world’;和EcHo’hello,world’;是一样的。
另一方面,变量是区分大小写的。
这就是说,$name,$NAME和$NaME是三个不同的变量。

  • 语句和分号

语句是完成一些任务的PHP代码集合。

PHP用分号来分隔简单语句。复合句用大括号来标记代码快,如条件测试或循环,在右括号后面不要用分号。和其他语言不一样的是,在PHP中右括号前的分号不是可选的:

if ($needed) {
echo “We must have it!”; //这里要求有分号
} //这里不要求有分号
php结束标签前的分号是可选的:

包含可选分号是好的编程习惯,这样做使得以后更容易添加代码。

  • 空白符和换行符

一般来说,空白符在PHP中无关紧要。可以将一个语句展开成任意行,或者将语句紧缩在一行。
例如,下面的语句:

raise_prices($sioventory, $inflation, $cost_of_living, $greed);

也可以写进更多的空白符;

raise_prices(

$inventory ,
$inflation ,

$cost_of_living ,

$greed
);

或更少的空白符:

raise_prices($inventory,$inflation,$cost)of)living,$greed);

可以利用这个灵活的格式来是代码更具可读性(通过排列分配、缩进等)。

一些懒惰的程序员利用这种自由的格式创建根本无法阅读的代码——这是不提倡的。

十月 22, 2006

将醒没醒是最头脑最清楚的时候,会想到好多在清醒的时候考虑不到的事。
快要睡觉了,今天也快结束了,说到今天就会想到明天,会想到有没有意义,什么意义,对我来说什么是时间的意义,不是很清楚。
写点东西,因为发现当把时间记录下来,就不会在某些时候找不到自己,就像朋友会说你在他的记忆里留下某些印象,而你根本不记得,忽然迷失了。
听一首歌,听久了就会觉得乏味,跟一个人呆久了,也许也会这样吧。
没有既定的思维去处理发生的事情,我想,这样很累吧,该忘掉的事情老是一点一点的刻意的或者不经意的想。
听说她去北京了。
我不认为我是个放不下的人,“专一只是受到的引诱不够”,而我,应该是没有找到一个属于我的人,“属于”这个词不该用到这,这个词太霸道了。
老是想起来小学时候的事情,老是把现在的自己放在不太可靠的记忆里的那个班里,很幼稚是不是,我好象一直都活在十几岁。