[PHP][中简体] PHP语法

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

<?php
echo "Before in main.php3<BR>\n";
$retval = include ('test.php3');
echo "File returned: '$retval'<br>\n";
echo "Back in main.php3<BR>\n";
?>
则于PHP4中执行的结果为:
Before in main.php3
Before the return
File returned: '27'
Back in main.php3
【注意】:执行到return处为止。

然而在PHP3中这是不合法的,PHP3中include()是不能传回数值的。

假如把main.php3改成:
<?php
echo "Before in main.php3<BR>\n";
include ('test.php3');
echo "Back in main.php3<BR>\n";
?>
则PHP3会产生parse error(剖析错误,由语法或打字错误所产生):
Before in main.php3
Before the return
27Back in main.php3
Parse error: parse error in .....
这是因为return指令并不是位于函数的括号中,而是位于非函数的括号中,只要把return移到括号之外即可。

【注意】:当PHP执行require()和include()时会由PHP模式转为HTML模式,档案引入完成时,再转回PHP
模式。

因此,若require()或include()的档案中有使用PHP语法,则需使用合法的PHP开始和结束的标记(TAG)。

假如main.php3改成:
<?php
在PHP中字符串可以用点(dot ‘.’)串接字符串或变量,但不可以用‘+’ 号。

字符串中的字符可以用数组索引的方式运作(如C/C++),如:
$str= “Hello”;
则 $str[0] 为第一个字符 H。

注意:PHP没有字符(char)这种型态,只有字符串(string)这种型态。

所以
$c = ‘x’;
是把 $c设为一个字符串,其值只含单一个字符,这和C/C++是不一样的。

以下是一个示范的程序:
<?php
/* 设定字符串 */
$str = "This is a string";
/* 串接字符串 */
$str = $str . " with some more text";
/* 串接字符串,含newline */
$str .= " and a newline at the end.\n";
/* str 结果(展开)为 '<p>Number: 9</p>' */
$num = 9;
$str = "<p>Number: $num</p>";
/* str 结果(不会展开)为 '<p>Number: $num</p>' */
$num = 9;
$str = '<p>Number: $num</p>';
$str = 'This is a test.';
$first = $str[0]; /* 取得第一个字符(索引值为0) */
$str = 'This is still a test.';
$last = $str[strlen($str)-1]; /* 取得最后一个字符 */
下是一个简例:
$a[0] = "abc"; #数值索引 0
$a[1] = "def"; #数值索引 1
$b["apple"] = 13; #键值“apple”
$b[“orange”] = “水果”; #键值(key) “orange” 对应到值(value) “水果”
$c[] = 10; # $c[0]=10;
$c[] = 20; # $c[1]=20;
基本上,当我们没标明索引值或键值时(index or key),PHP会自动由
index=0开始设定数组的值,假如先前有用index的方式设定过数组的元素,则自动延伸其index值为下一个可用的index值(该值不一定为index+1,因为它可能已经存在了)。

如:
<?
$a[2]=10;
$a[]=12;
print_r($a);
$b[]=100;
$b[]=200;
echo "<BR>\n";
print_r($b);
?>
其结果为
Array
(
[2] => 10
[3] => 12
)
<BR>
Array
(
[0] => 100
[1] => 200
)
// 以下的程序代码可以列出array的内容
$i=0; # 预防打字错误造成无限循环用, 可以去除
echo "<TABLE border=1>";
for (reset ($fruits); current($fruits) ; next($fruits))
{
echo '<TR><TD>current='.current($fruits)."</TD>";
$var = each($fruits);
echo '<TD>$var[0]='.$var[0]."</TD>";
echo '<TD>$var[1]='.$var[1]."</TD>";
echo '<TD>$var["key"]='.$var["key"]."</TD>";
echo '<TD>$var["value"]='.$var["value"]."</TD>";
echo '<TD>prev='.prev($fruits)."</TD></TR>";
$i++; # 预防打字错误造成无限循环用, 可以去除
if( $i >= 8) { echo "error"; break; } # 预防打字错误造成无限循环用, 可以去除
}
echo "</TABLE>";
?>
其执行结果如下:
注意:执行 each() 时,会自动地移动位置到下一个元素的位置。

又如:(注意key()值的变化)
<?
$a=array(10,20,30);
echo key($a)."=".current($a)."<BR>\n";
next($a);
$a[]=40; // 新增一个元素!
echo key($a)."=".current($a)."<BR>\n";
reset($a);
echo key($a)."=".current($a)."<BR>\n";
print_r($a);
?>
执行的结果为:
0=10
1=20
0=10
Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 40 )
至于array_walk()可用来把数组的元素以使用者定义的函数处理过一遍,把所有的元素皆走过一次。

其用法为指定要处理的数组名为第一个参数,要使用的函数为第二个参数。

array_walk()函数会把元素的数值(value)当做第一个参数传给使用者函数,把元素的键值(key),当做第二个参数传给使用者函数。

假如array_walk()有使用第三个参数,则第三个参数会成为使用者函数的第三个参数。

如:
<?
function show($e)
{
echo "value=$e<BR>\n";
}
function show2($v, $k)
{
echo "key=$k, value=$v<BR>\n";
}
function show3($v, $k, $extra)
{
echo "key=$k, value=$v($extra)<BR>\n";
}
$arr=array("ca","us","tw","cn","uk");
array_walk($arr,show);
reset($arr);
array_walk($arr,show2);
reset($arr);
array_walk($arr,show3,"para3");
?>
其结果为:
value=ca
value=us
value=tw
value=cn
value=uk
key=0, value=ca
key=1, value=us
key=2, value=tw
key=3, value=cn
key=4, value=uk
key=0, value=ca(para3)
key=1, value=us(para3)
key=2, value=tw(para3)
key=3, value=cn(para3)
key=4, value=uk(para3)
多维array
PHP使用多维数组相当的简单,只要加上另一个key值索引即可。

注意:留意一下二维时的语法及=> 的用法: $key=>$value;
例:
<?php
$a=array("甲","乙","丙", 40);
// 以下会show出: Array=甲乙丙40
echo $a."=".$a[0].$a[1].$a[2].$a[3]."<BR>\n";
$a["A"]="甲";
$a[]="三";
echo "a=".$a["A"].$a[4]."<BR>\n";
echo '$a::';
print_r($a);
$b[]=10;
$b[]=21;
echo '$b::';
print_r($b);
echo "b[0]=".$b[0].";b[1]=".$b[1];
//以下为二维数组
$c = array(
0 =>array("甲", "乙", "丙"),
"1" =>array(1.3,2.4,3.6),
"C3" =>array(1.2E+2,null, 3.4E-5)
);
echo "array c[0]=".$c[0][0].$c[0][1].$c[0][2]."<BR>\n";
echo "array c[\"1\"]=".$c["1"][0].$c["1"]["1"].$c["1"][2]."<BR>\n"; echo "array
c[\"C3\"]=".$c["C3"][0].$c["C3"][1].$c["C3"][2]."<BR>\n";
// 以下会 show 出: The same!
if( $c[0][1]==$c["0"]["1"] ) echo("The same!<BR>\n");
if( 1 == "1" ) echo("yes, the same.<BR>\n");
echo '$c::';
print_r($c);
echo "<BR>";
// 以下为多维数组
$f = 10;
$a[1] = $f; # one dimensional
$a["foo"] = $f;
$d[1][0] = $f; # two dimensional
$e["foo"][2] = $f; # 混合型keys
$g[3]["bar"] = $f; # 混合型keys
$h["foo"][4]["bar"][0] = $f; # four dimensional!
echo '$h::';
print_r($h);
// 以下示范数值和文字key值并用的array
$a=array("a"=>100, 2=>200, "c"=>300); // 重新定义 $a 为一维array for(reset($a); list($key, $value)=each($a); )
{
echo "a[$key]=$value; <BR>\n";
}
?>
以下是执行后观看浏览器的原始码(不是浏览器显示的HTML结果,而是HTML的原始码)之结果:
Array=甲乙丙40<BR>
a=甲三<BR>
$a::Array
(
[0] => 甲
[1] => 乙
[2] => 丙
[3] => 40
[A] => 甲
[4] => 三
)
$b::Array
(
[0] => 10
[1] => 21
)
b[0]=10;b[1]=21array c[0]=甲乙丙<BR>
array c["1"]=1.32.43.6<BR>
array c["C3"]=1203.4E-005<BR>
The same!<BR>
yes, the same.<BR>
$c::Array
(
[0] => Array
(
[0] => 甲
[1] => 乙
[2] => 丙
)
[1] => Array
(
return $c." ".$a;
}
function concat3($a)
{
$b = $b.$c." ".$a;
return $b;
}
function concat4($a)
{
static $b;
$b = $b.$c." ".$a;
return $b;
}
$x = "world";
$d = concate1($x);
// 以下show 出: d=Hello world echo "d(1)=".$d."<BR>\n";
$d = concate2($x);
// 以下show 出: d= world echo "d(2)=".$d."<BR>\n";
$d = concat3($x);
$d = concat3($x);
echo "d(3)=$d<BR>";
$d = concat4($x);
$d = concat4($x);
echo "d(4)=$d<BR>";
?>
执行的结果如下:
d(1)=Hello world
d(2)= world
d(3)= world
d(4)= world world
现在执行第 9 圈慢跑.
总共跑了 10 圈.
现在执行第 0 圈慢跑.
现在执行第 1 圈慢跑.
现在执行第 2 圈慢跑.
现在执行第 3 圈慢跑.
现在执行第 4 圈慢跑.
现在执行第 5 圈慢跑.
现在执行第 6 圈慢跑.
现在执行第 7 圈慢跑.
现在执行第 8 圈慢跑.
现在执行第 9 圈慢跑.
总共跑了 10 圈.
现在执行第 0 圈慢跑.
现在执行第 1 圈慢跑.
现在执行第 2 圈慢跑.
现在执行第 3 圈慢跑.
现在执行第 4 圈慢跑.
现在执行第 5 圈慢跑.
现在执行第 6 圈慢跑.
现在执行第 7 圈慢跑.
现在执行第 8 圈慢跑.
现在执行第 9 圈慢跑.
总共跑了 10 圈.
现在执行第 0 圈(偶数)慢跑.
现在执行第 2 圈(偶数)慢跑.
现在执行第 4 圈(偶数)慢跑.
现在执行第 6 圈(偶数)慢跑.
现在执行第 8 圈(偶数)慢跑.
注:我们可以像C/C++一样用break中断循环及continue提早本次循环的完成而进入下一个循环。

switch case流程。

相关文档
最新文档