BBS水木清华站∶精华区

发信人: yyh (阿欢&正在努力上进中......), 信区: Linux        
标  题: PHP3特有的语言特点 
发信站: BBS 水木清华站 (Sun Nov 28 20:14:39 1999) 
 
PHP3是一种非常强大的CGI脚本语言,就其语言特点基本上源于C,就其实现 
方式而言更象PERL,而其对数据库的内在支持更使之成为ASP的强大对手。 
这里先简要介绍一些PHP3中比较容易弄错的语言特点(与C语言相比较)。 
1.自动屏蔽的全局变量在函数中的使用 
不同于C语言,PHP3中的全局变量在函数中是默认不起作用的, 
比如 
<? 
$a = 1; 
function test() 

print $a; // 变量 $a 未定义 

test(); 
print $a; 
?> 
输出的结果不是预想中的“1 1”, 而只有一个“1”。因为 
全局变量$a在函数里不存在,test函数里的$a无定义,因此不 
显示,如果要使用全局变量必须用global声明,如 
<? 
$a = 1; 
function test() 

global $a; 
print $a; 

test(); 
print $a; 
?> 
或通过全局变量数组($GLOBALS[])来直接使用,如 
<? 
$a = 1; 
function test() 

print $GLOBALS["a"]; 

test(); 
print $a; 
?> 
2.奇妙的变量访问机制 
PHP3里的变量名允许嵌套定义,如先定义一个$a="hello",然后可以用$$a="world" 
来访问$hello,最后变成$a="hello", $hello="world"。这里的$操作符有点象C语言 
里的*,但$是以名字(字符串)链接,而*是以地址链接的。如 
<? 
$a = "hello"; // 注意不能有空格 
$$a = "world"; 
$$$a = "!"; 
print $a; // 显示 hello 
print $hello; // 显示 world 
print $world; // 显示 ! 
?> 
另外PHP3还提供了用字符串做数组下标建立和访问数组的方法,如前面用到的全局 
变量数组就是以这种机制访问的,如 
<? 
$a["first"] = "second"; 
$a["second"] = "third"; 
$a["third"] = "first"; 
print $a["first"]; // 显示 second 
print $a[$a["second"]]; // 显示 first 
print $a[$a[$a["third"]]];// 显示 third 
?> 
3.强大的分块方法 
在C里面一个语句块可以用 { } 来标出,在 DELPHI 里则是 BEGIN END。而在 PHP3 里 
更可以用一个":"将一段语句独立成块,这样做的好处不言自明。如 
<? 
$date=getdate(time()); 
if($date["hours"] < 12): 
?> 
<H1>Good morning!</H1> 
<? 
elseif($date["hours"] < 18): 
?> 
<H1>Good afternoon!</H1> 
<? 
else: 
?> 
<H1>Good evening!</H1> 
<? 
endif; 
?> 
while语句也支持类似的分块方法,如 
$a=5; 
while($a-- > 0): 
?> 
<H1>print a line</H1> 
<? 
endwhile; 
?> 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 162.105.17.237] 

BBS水木清华站∶精华区