1. 基本语法
每一句后面要有分号”;”
变量名前必须有$符号,不需要提前声明。数组会自动扩展,不需要提前定义,下标支持字符串,使用的是哈希表索引。特殊的一个用法是$a=”b” $$a=”c” 等价于$b=”c”
字符串相加运算符 “.”
强制类型转换有三种 Integer Double String
结构控制同C相同
2. 数组的哈希表遍历
$i[“a”] = 0;
$i[“c”] = 1;
Reset($i);
$k = key($i); ß 和next一起用
Echo “$k, $i[$k]”;
Next($i); ß
3. 开发环境
PHP和mysql服务器暂时选择APM Express
IDE用Zend Studio,挺好用的,有个小问题,如果破解了xp的uxtheme.dll那么Zend反应会非常慢,网上似乎很少有人遇到这个问题,在配置里面把“使用os界面方案” 点掉就行啦。
使用/**/或//或#注释程序
4. 语法
对变量大小写敏感,但是对函数大小写不敏感
字符常量用单引号,字符串用双引号,字符串中出现双引号时需要用转义字符\”
PHP内部常量:__FILE__, __LINE__, PHP_VERSION, PHP_OS….
&: 指针,只能用于函数中参量的引用传值
->: 对象的方法或属性
=>: 数组的元素值
$a = array( “apple”=>“red”, “orange”=>”yellow”)
5. 数组
数组不需要声明,数组没有类型;元素和下标都可以是任何类型,同一数组各元素的类型也可以不同;数组允许嵌套,数组的元素可以是数组。
数组的遍历:
1. While(list($key, $value) = each($arr)){
// $key à 下标
// $value à 值
}
2. foreach($arr as $value){
// $value à 值
}
3. foreach($arr as $key=>$value){
// $key => $value
}
数组排序:
sort arsort assort rsort ksort usort
6. 数组操作相关函数
count(mixed var) 计算数组内元素/变量个数
sizeof(array) 计算数组内元素个数
reset(array) 设置内部指针指向第一个元素
end(array) 设置内部指针指向最后一个元素
next(array) 返回下一个元素
prev(array) 得到前一个元素
each(array) 返回下一个key/value对
$test = array(‘x’=>’x1’, ‘y’=>’y1’); $bar = each($test);
$bar内有四个值 0=>x 1=>x1 key=>x value=>x1
通常和结构体(非函数)list()共同使用
While( list($key, $value) = each($arr)) {…}
7. 函数
Function func($arg1, $arg2, …..) // 参数可以使用数组,可以使用引用& à &$arr
可变长度的参数,PHP支持多个参数同时传递,而不用预先定义它们的个数。使用func_num_args()、func_get_arg()、func_get_args()获得函数的参数的个数、某个参数的值和全部参数的值。
函数的返回值:无需预先定义,直接return $a; 就行了,返回值同样可以是任何类型
8. 类
定义:
<?php
// 程序名 bike.inc ß
var $var1;
function bike(){ // 构造函数
$this->var1 = “bike”; // 对本身的变量调用要使用this
// 注意,$this->var1而不是$this->$var1
}
Function Set($varname, $value)
{
$this->$varname = $value; // 注意和$this->varname = $value;的区别
}
?>
使用:
require(“bike.inc”); // 包含头文件
继承:
class elecBike extends bike{…}
与C++类的比较:
àPHP似乎没有析构函数à所有函数和变量都只能是publicà不支持虚拟和多态
9. 变量作用域(与C++不同)
$a = 1;
Function test(){
return $a; // 无返回值
}
要想在函数里面引用全局变量必须使用global关键字
Function test(){
global $a;
return $a; // 返回值1
}
第二种使用全局变量的方法是使用特殊数组$GLOBALS:
Function test(){
return $GLOBALS[“a”]; // 返回值1
}
Php也有静态变量:static $a = 0;…
1. 输出函数
echo
print(string) 返回值boolean,如果显示一半浏览器挂了则会出现失败情况
printf(string format, mixed args…) 指定数据格式化后显示
sprint(同上) 同上,输出到string %b 二进制 %C ASCII字符
%d 10进制 %f 浮点 %o 八进制 %s字符串 %x 16进制
2. 字符串操作函数
strchr strstr strops 字符串查找函数
strcmp 字符串对比函数
strlen/strtolower/strtoupper/ucfirst 长度/小写/大写/首字母大写
substr 子字串,负号表示从后往前数
Chr/ord 返回ASCII字符/返回字符对应的ASCII码
AddSlashes/StripSlashes 字符串加/除斜线,用于数据库操作
à strtok 分割字符串的函数
首次使用$tok = strtok($string, “ ”);
While($tok){
Echo “word is $tok<br>”;
$tok = strtok(“ ”); ß 再次使用无需指定源自串
}
à implode/explode 将数组的内容组合成一个字符串/将字符串打开返回数组
à join implode的别名
3. HTML处理函数
htmlspecialchars 把特殊字符转化为html格式,比如& -> &
nl2br 换行字符转化为<br>
rawurldecode URL专用字串转化为普通字串
rawurlencode 普通转URL
md5(string) MD5
urlencoder/urldecoder
parse_url 解析形如ftp://user:pwd@host.com:port返回值为数组
包括scheme、host、prot、pass、path等等
base64_encode/base64_decode
4. 字符串的正则表达式处理
ereg/eregi 字符串比对解析/不考虑大小写,返回值int
à ereg(string patten, string string [, array regs]); 根据patten对比string,找到的字串放到数组regs中。
ereg_replace/eregi_replace 字符串比对解析并替换/不考虑大小写
split(string pattern, string string) 将字符串按指定的规则分割
5. 正则表达式
^ ^an 匹配所有an开头的字符串
$ tion$ 匹配所有tion结尾的字符串
abc 匹配所有包含abc的字符串
* ab* 匹配a开头0个或多个b的字符串
+ ab+ 匹配a开头至少有一个b的字符串
? ab? 匹配a开头至多有一个b的字符串
{n} ab{2} 匹配a开头两个b的abb
{n,} ab{2,} 匹配a开头至少有2个b的abb/abbb/abbbb
{n,m} ab{3,5} 匹配a开头3~5个b的abbb/abbbb/abbbbb
() a(bc)* 同上,符号针对对象为bc
| (a|b)*c 连续a或b并以c结尾
[] ^[a-zA-Z] 指定字符串中一个字符的可选范围
[^] [^a-zA-Z] 指定字符串中一个字符的不可选范围
6. 文件操作函数
int fopen(string filename, string mode) 打开
int fclose(int fp) 关闭
int feof(int fp) 测试文件是否指向文件尾部
string fgets(int fp, int length) 读取文件中的一行,length可选
int fputs(int fp, string str, [int length]) 写到文件指针 = fwrite
int fseek(int fp, int offset) 移动文件指针
int ftell(int fp) 获取文件指针
int rewind(int fp) 重置文件指针到开头处
mkdir/rmdir 创建/删除文件夹
7. 时间函数
getdate() 返回数组,包括年月日等
gmdate() 同上,但转化为格林威治标准时间
time() 返回1970.1.1以来的秒数
microtime() 返回微秒+秒
checkdate(年,月,日) 判断日期是否符合规范
1. 图像功能需要安装GD library
早期版本支持gif,现在由于版权问题改为支持png
png是一种无损颜色索引位图(256色)
2. 图像操作函数
int ImageSX(int im) 获取图像宽度
int ImageSY(int im) 获取图像高度
int ImageCreateFromPNG(string filename) 读取一张PNG图像用作处理
int ImagePNG(int im, string [filename]) 建立一张PNG图像
int ImageColorAt(int im, int x, int y) 获取指定点的颜色索引值
int ImageDestroy(int im) 结束图像
ImageColorTransparent 指定透明背景色
ImageColorAllocate(int im, r, g, b) 为图像分配颜色
Array GetImageSize(string filename) 获取图像的长宽
int ImageColorClosest(int im, r, g, b) 找出图像中最接近的颜色索引
int ImageColorResolve (int im, r, g, b) 找出对应rgb的颜色索引,如没有则找最近的
ImageColorSet(int im, int index, r, g, b) 设定颜色表上指定索引的颜色
ImageColorsForIndex(int im, int index) 获取制定索引的颜色
int ImageColorsTotal(int im) 计算图片的调色板有几种不同的颜色
3. 绘图函数
ImageArc ImageChar ImageCharUp ImageDashedLine ImageFilledPolygon
ImageFilledRectangle ImageFillToBorder ImageLine ImagePolygon ImageRectangle
ImageSetPixel ImageString ImageStringUp ImageTTFText’
4. 图像操作步骤
à 创建图像
$im = ImageCreate(90, 20);
à 创建颜色索引
$black = ImageColorAllocate($im, 0, 0, 0);
à 绘图
ImageFill($im, 0, 0, $black);
à 将图像输出为PNG
ImagePNG($im);
à 删除图像
ImageDestroy($im);
动态图像:
ð 将上面的脚本保存为文件image.php,使用<IMG SRC=”image.php”>即显示该图片
1. Cookies
Netscape(ms已经倒闭?)发明的。为了和UNIX兼容,cookies的路径是区分大小写的。
à设置单值Cookies:
setcookie("CookieName", value, expire_time, path, site, bool_secure);
setcookie("user name", "fangxia", time()+3600); // 1小时后过期
à读取单值Cookies:
echo $_COOKIE["user name"]; // 或者
echo $HTTP_COOKIE_VARS["user name"];
à多值Cookies:
setcookie("cookie[three]", "Three");
setcookie("cookie[two]", "Two");
setcookie("cookie[one]", "One");
if (isset($_COOKIE["cookie"])){ ß important!
while(list($key, $value) = each($_COOKIE["cookie"])){
echo "$key ==> $value";
}
}
2. GET(显式地出现如?var=value)
QueryString用于页面之间传递变量。通常用法是nextpage.php?<?$value?>
// in send.php
<?
$SendValue = urlencode("Information");
echo "<a href = \"receive.php?send=$SendValue\">Press Here</a>"
?>
// in receive.php
<?
if(isset($_GET[send])){ // important
echot $_GET[send];
}
?>
ps: 不知道为什么HTML嵌入php不行
<a href = "receive.php?send=<?php $SendValue?>">Press Here</a> // $SendValue读不出
知道了,应该<?echo $SendValue;?>
3. POST(隐式地传递)
// in send.php
<?php
$UserName = "TheLostWorld";
?>
<FORM METHOD = "POST" ACTION = "receive.php">
<INPUT Name="UserName" TYPE="HIDDEN" VALUE="<?echo $UserName;?>">
<INPUT TYPE="Submit" name="下一页">
</FORM>
// in receive.php
<?
echo $_POST[UserName];
?>
4. Session
会话提供了所有网页共用的公共变量的存储机制。会话提供了可以跟踪每个访问者从到达到离开的全部活动的一种机制。
àsession函数列表ß
boolean session_start(void)
初始化一个新的session,若已存在,则与原session连接。无参数,返回恒为true
boolean session_destroy(void)
boolean session_register(string name)
登记一个变量为会话变量
boolean session_is_registered(string name)
判断变量是否已经被登记
boolean session_unregister(string name)
取消登记一个会话变量
string session_name([string name]) ?
获取/设置当前session的名称,无参数表示获取,有参数表示设置
string session_id([string id])
获取/设置当前session的id,同上,用于标识当前session
string session_module_name([string module]) ???
获取/设置当前会话模块
àsession的使用ß
// in page 1
<?
session_start();
$info = "Thanks for your coming";
session_register("info"); // 不知为何这种方法不行
$_SESSION[info] = "This is a session test";
?>
// in other pages
<?
session_start(); // 必须加入,否则无法读取session
echo $info; // 直接读取其他页面设置的session变量
echo $_SESSION[info]; // OK
?>
5. 表单交互
// in send.php
<FORM METHOD = "POST" ACTION = "receive.php">
Name:<INPUT TYPE="text" Name="Name"><br>
Email:<INPUT TYPE="text" Name="Text"><br>
<INPUT TYPE="Submit" value="下一页">
</FORM>
// in receive.php
<?
$name = $_POST[Name]; // …….
?>
int mysql_connect([string hostname], [string username], [string password]);
连接成功返回一个正整数的连接标示符,出错时返回false。所有的参数都是可选的,如果没有指定参数,缺省的是本地主机、本地主机拥有该进程的用户的用户名以及空口令。主机名也可以包含端口号,形如”host:port”。
第二次对该函数使用相同参数调用时,这个函数并不重新建立连接,而是返回当前连接的标识符。
该连接会再脚本执行完的同时被服务器自动关闭,除非之前被显式地调用mysql_close()。
Int mysal_create_db(string database_name, [int link_identifier]);
建立一个MySQL数据库,操作成功返回一个连接号为正的连接标识符。出错返回false。
int mysql_select_db(string database_name, [int link_identifier]);
连接一个MySQL数据库,成功返回true,失败false。如果不指定link_identifier,默认连接最后一个“活动的数据库”。活动数据库是指:任何一个当前调用的mysql_query()所执行的查询都是针对这个数据库的。
int mysql_query(string query, [int link_identifier]);
发送一个MySQL查询。当连接成功时返回正的MySQL查询结果标志符号,出错返回false。如果没有指定连接标识符,默认使用最后一个打开的连接。如果SQL语句是select,则处理返回一个结果号,否则返回的值可以不理会。
int mysql_affected_rows ( [int link_identifier]);
获取指定/上次连接操作(INSERT, UPDATE, or DELETE)影响的数据项个数。
int mysql_num_rows ( [int link_identifier]);
获取指定/上次连接操作(仅SELECT)影响的数据项个数。
boolean mysql_data_seek( int result, int row_number);
移动内部查询结果指针,同mysql_fetch_row()一起使用。注意row_number是否越界。
array mysql_fetch_row(int result);
返回查询结果,并且移动内部查询结果指针到下一条记录。返回的数组只能用数字下标访问。
array mysql_fetch_assoc(int result);
返回查询结果,并且移动内部查询结果指针到下一条记录。返回的数组只能用字段名下标访问。
array mysql_fetch_array(int result);
返回查询结果,并且移动内部查询结果指针到下一条记录。返回的数组可以用数字下标或字段名作为下标访问。如果已经取到了最后一行,则返回false。
boolean mysql_free_result(int result);
释放查询结果资源。
object mysql_fetch_field(int result, [int field_offset]);
返回包含该字段信息的对象。对象包括如下的属性:name, table, max_length … 访问方法为object->name等。
县委中心组学习型党组织建设学习笔记内容之二——什么是学习型政党学习型政党以人的素质提高和人的全面发展为创建的根本宗旨,并最终以党员…
一、要乐于学习。要沉入进去、静下心来,少一些应酬,多一些读书;少一些浮躁,多一些沉静。要通过学习,提高自身工作能力和水平,解决实际…
县委中心组学习型党组织建设学习笔记内容之五——学习型党组织建设学习的主要内容(一)坚持用中国特色社会主义理论体系武装头脑。深入学习…
时间:20xx年x月x日地点:学习室参加人:全体团员授课人:郑大伟内容:一、《六个“为什么”--对几个重大问题的回答》连载五:充满…
NS2学习笔记——tcl和OtclTCL语言1.解释性语言,可以使用命令行或者脚本的方式运行2.以#和;#为注释符,其中#只能在行…
世界十大著名导演史蒂芬斯皮尔伯格出生日期19xx年10月28日出生地点美国地区美国这是毫无争议的再难找到一位导演在商业与艺术间游刃…
客观题型练习题一单选题1WhenhesawProfessorSmithhehishandtohimAextendedBexpand…
20xx年20xx年考研英语二真题及答案20xx年考研英语二真题SectionIUseofEnglishDirectionsRea…
尊敬的大学英语教研室负责老师您好大学英语全新版从20xx年问世以来受到使用学校的广泛欢迎并被教育部评为普通高等教育十五国家级规划教…
Unit1Part1WordDictation1chase2cruelty3exploit4idle5continuity6sustain7minut…