恶补PHP

      Know 2005-12-30 14:49

公司代理支付宝,需要用PHP来写在线支付的接口,一向都用ASP工作的,想想PHP还是上大学时自己看过。现在也忘的差不了。再看看吧!大部分内容来自PHP参考手册,手是有的就不用看了。
一、环境配置,不多了,用google一搜一大把。
二、语法
1、嵌入方式
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>les01</title>
</head>
<body>
嵌入方式:
<?
echo "hello world\n";//第一种
?>
<?php
echo "hello world\n";//第二种
?>
<script language="php">
echo ("hello world")//第三种
</script>
</body>
</html>

2、文件引用
<?php
include("Config.php");
require("Config.php");
/*
require通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

include 一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 

*/
?>

3、程序注释语句

//这是单行注释

/*
多行的
*/

#还有这种,没有用过



3、常量与变量
<1>常量:define()函数
<?php
define("COPYRIGHT", "Copyright &copy; 2000, netleader.126.com");
echo COPYRIGHT;
?>
<2>变量:

[1]类型:string integer double array object

string:字符型,无论是单一字符或数千字的字符串都是使用这个变量类型。值得注意的是要指定字符串给字符串变量,要在头尾加上双引号 (例如: "这是字符串")。在要让字符串换行时,可使用溢出字符,也就是反斜线加上指定的符号,若是 \x 加上二位数字,如 \xFE 即表十六进位字符,详见下表:
符号 意义
\" 双引号
\\ 反斜线
\n 换行
\r 送出 CR
\t 跳位 (TAB)

interger:为整数型别。在 32 位的操作系统中,它的有效范围是 -2,147,483,648 到 +2,147,483,647。要使用 16 进位整数可以在面加 0x。

double:为浮点数型别。在 32 位的操作系统中,它的有效范围是 1.7E-308 到 1.7E+308。

array:为数组变量,可以是二维、三维或者多维数组,其中的元素也很自由,可以是 string、integer 或者 double,甚至是 array。

object:类,面向对象,可以参看JAVA的语言,PHP好象用的不多!

[2]变量的声明
只要在英文字符串前面加个美元号 $ 即可,目前变量名称仍不能使用中文,区分大小写。
例子
$             mystring="中华人民共和国";
$             inte=123456;
$             myarray = array("子", "丑", "寅", "卯");

class foo {
  function do_foo () { 
    echo "Doing foo."; 
  }
}

$             bar = new foo;
$             bar -> do_foo ();



此外,还有布尔值 (boolean),通常 1 即为 true,0 为 false。

在变量之间,若要转换类型,在 PHP 程序中是很自由的,直接就拿来用了,不必经过特殊的转换函数。当然,浮点数转成整数就有点牵强了,不过可以将浮点数转成字符串,也是很好处理。

3、变量的使用
<1>全局变量
$ GLOBALS声明
例子:
<?php
// 本程序使用 $           GLOBALS 数组
function myfunc() {
  echo $           GLOBALS["PHP_SELF"];
}
myfunc();
?>



错误的例子:
<?php
// 这是错误的示范
function errfunc() {
  echo $           PHP_SELF;
}
errfunc();
?>

应修改为:
<?php
// 本程序使用全局定义
function myfunc() {
  global $           PHP_SELF;
  echo $           PHP_SELF;
}
myfunc();
?>


变量前面加上 global 的名称,就是定义该变量为全局变量。用这种方式,就不需使用 $ GLOBALS 数组,也能让变量进入自行开发的函数中。
<3>静态变量
<?php
// 静态变量的例子
function myfunc() {
  static $           mystr;
  $           mystr.="哈";
  echo $           mystr."<br>\n";
}
myfunc();   // 哈
myfunc();   // 哈哈
myfunc();   // 哈哈哈
?>

函数在执行时所产生的变量,在函数结束时就消失了,有时因为程序的需要,函数在循环中,当不希望变量在每次执行完函数就消失的话,静态变量 (static variable) 就派上用场了。上例中,使用 $ mystr 变量之前,先在变量前面加上 static,即表示变量 $ mystr 是静态变量,当每次执行 myfunc() 函数时,$ mystr 的值会一直增加,每执行一次就多一个哈字。若将 static 的静态变量定义拿掉,就没办法累加“哈”字了。

应用表格的例子:

<?php
function TdBackColor() {
  static $           ColorStr;
  if ($           ColorStr=="808080") {
    $           ColorStr="c0c0c0";
  } else {
    $           ColorStr="808080";
  }
  return($           ColorStr);
}
echo "<table border=1>\n";
for ($           i=0; $           i<10; $           i++) {
  $           ColorStr=TdBackColor();
  echo "<tr><td bgcolor=".$           ColorStr.">这是第".$           i."行</td></tr>\n";
}
echo "</table>";
?>



.的作用和“+”一样。

<4>应用技巧

<?php
$         a = "Hello";
$         $         a = "world";
echo "$         a, $         hello";   // Hello, world
echo "$         a, {$         a}";    // 也是 Hello, world
?>

<5>变量传递
<form action=next.php method=post>
姓名: <input type=text name="username"><br>
性别: <input type=text name="sex"><br>
<input type=submit>
</form> 


如果PHP 的配置文件中,track_vars 设为 On 时,直接产生$ username和$ sex,需要处理的文件中,直接用就可以,不象ASP一样要request进来!
三、运算符号
1、算术运算符
算术运算 (arithmetic operators) 符号,就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算
% 取余数
++ 累加
-- 递减
例:
<?php
$        a = 8;
$        b = 2;
$        c = 3;
echo $        a+$        b."<br>\n";
echo $        a-$        b."<br>\n";
echo $        a*$        b."<br>\n";
echo $        a/$        b."<br>\n";
echo $        a%$        c."<br>\n";
$        a++;
echo $        a."<br>\n";
$        c--;
echo $        c;
?>


2、字符串运算

英文下的句号:“.”连接作用,和“+”号作用差不多
<?php
$      a="abc";
$      b="xyz";
echo $      a.$      b;
?>


3、赋值运算

= 将右边的值连到左边
+= 将右边的值加到左边
-= 将右边的值减到左边
*= 将左边的值乘以右边
/= 将左边的值除以右边
%= 将左边的值对右边取余数
.= 将右边的字符串加到左边

例:
<?php
$      a = 5;
$      a += 2;    // 即 $      a = $      a + 2;
echo $      a."<br>\n";
$      b = "哇";
$      b .= "哈";   // $      b = "哇哈";
$      b .= "哈";   // $      b = "哇哈哈";
echo "$      b<br>\n";
echo "$      a";
?>


4、位运算

& 且 (And)
| 或 (Or)
^ 异或 (Xor)
<< 向左移位
>> 向右移位
~ 取 1 的补数

要说的东西太多不说了。

5、逻辑运算

< 小于
> 大于
<= 小于或等于
>= 大于或等于
== 等于
!= 不等于
&& 而且 (And)
and 而且 (And)
|| 或者 (Or)
or 或者 (Or)
xor 异或 (Xor)
! 不 (Not)

6、补充其它运算符

$ 变量
& 变量的地址 (加在变量前)
@ 不显示错误信息 (加在函数前)
-> 类的方法或者属性
=> 数组的元素值
? : 三元运算子

例:
x>y?x:y

如果x>y结果为true,执行x,否则执行y
和下面的结果一样
if (x>y){
echo x
}else{
echo y
}


四、程序流程
1、if语句
if ... 
{
}


if ....else....


if ....
{
....
}else
{
....
}

if ....
{
....
}elseif
{
....
}elseif
{
....
}
else
{
....
}



2、while与do...while
while先判断再执行
do... while先执行再判断
<?php
$   i = 1;
while ($   i <= 10) {
  print $   i++;
  echo "<br>\n";
}
?>


<?php
  $   i = 1;
  do{
  print $   i++;
  echo "<br>\n";
}while($   i <= 10)
?>


3、for循环
for (expr1; expr2; expr3) {
statement
}

其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

例:
<?php
for($   i=0;$   i<10;$   i++)
{
echo $   i;
echo "<br>";
}
?>


4、switch语句
switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
语法如下


switch (expr) {
case expr1:
statement1;
break;
case expr2:
statement2;
break;
:
:
default:
statementN;
break;
}

其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。

<?php
switch (date("D")) {
case "Mon":
echo "今天星期一";
break;
case "Tue":
echo "今天星期二";
break;
case "Wed":
echo "今天星期三";
break;
case "Thu":
echo "今天星期四";
break;
case "Fri":
echo "今天星期五";
break;
default:
echo "今天放假";
break;
}
?>


很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。

5、break与continue

break 用来跳出目前执行的循环
continue 立即停止目前执行循环,并回到循环的条件判断处

<?php
$  i = 0;
while ($  i < 10) {
  if ($  arr[$  i] == "stop") {
    break;
  }
  $  i++;
}
?>


<?php
while (list($  key,$  value) = each($  arr)) {
  if ($  key % 2) { // 略过偶数
    continue;
  }
  do_something_odd ($  value);
}
?>

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}